私は、コードを示し、それは、go play非常に単純です:スライスリードの要素を削除して元のスライスを変更しましたか?
上記のコードでpackage main
import (
"fmt"
)
func main() {
a := []int{1,2,3,4,5,6}
for i:=0 ; i < len(a); i++ {
b := append(a[:i], a[i+1:]...)
fmt.Println(b)
}
fmt.Println(a)
}
、私はスライスを持っている、と私はそれがループ内の要素の削除したかったです。
23456
13456
12356
12346
12345
が、私が得た:
[2 3 4 5 6]
[2 4 5 6 6]
[2 4 6 6 6]
[2 4 6 6 6]
[2 4 6 6 6]
[2 4 6 6 6]
なぜ私が出力されている願って何
?行くのdocumentスライスの容量が十分でない場合、それは要素のreallocを行い、私も元のスライスで何かを変更したと言う...
誰かが私の説明どのようにこれが起こることができますか?
あなたはコピーを使用して行うことができます欲しい:https://play.golang.org/p/XPiDvJtRFe – abhink
B:= APPEND([:I]、[I + 1は、 :] ...)、確かに、このコードは、 –