切片面试题

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 协议》,转载必须注明作者和本文链接
讨论数量: 1
giao哥

这个不难吧 :grinning:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!