func main() {
var s = [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
data := s[2:4]
data[0] = 100
data[1] = 101
fmt.Println(s) // [0 1 100 101 4 5 6 7 8 9]
s[2] = 2
s[3] = 3
fmt.Println(data) //[2 3]
fmt.Println(s) //[0 1 2 3 4 5 6 7 8 9]
fmt.Println(cap(data)) // 8
}
原因就是這兩個切片共用一個底層陣列。切片的結構體的 Data
是指標指向底層陣列的的,所以修改一個另一個也會隨之改變。詳細解釋
切片轉字串
strings.Replace(strings.Trim(fmt.Sprint(s), "[]"), " ", ",", -1)
本作品採用《CC 協議》,轉載必須註明作者和本文連結