切片面试题
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 协议》,转载必须注明作者和本文链接
这个不难吧 :grinning: