go切片操作

    s1 := []int{1, 2, 3, 4, 5} //短操作符声明 len为4,cap为4
    s2 := make([]int, 2, 4)    //make语法声明 ,len为2,cap为4
    s2 = []int{5, 6}

    s3 := append(s2, 7) //append一个元素
    fmt.Println(s3, s2) //[5 6 7] [5 6]
    s2[0] = 0
    fmt.Println(s3, s2) //[5 6 7] [0 6]

    s4 := append(s2, s1...) //append  一个切片所有的元素
    fmt.Println(s4)         //[0 6 1 2 3 4 5]

    //return
    copy(s1, s2)    //  复制,用s2的元素填充s1里去,改变原slice,覆盖对应的key
    fmt.Println(s1) //[0 6 3 4 5]

    s1[0], s1[1] = 1, 2
    copy(s2, s1)
    fmt.Println(s2) //[1 2] 目标slice len不够时,只填满len

    s5 := s1[1:4]
    s5[0] = 10
    s6 := s5[0:4] //不会报错,因为cap为4,从底层取得最后一位

    fmt.Println(s1, s5, s6, cap(s6)) //[1 10 3 4 5] [10 3 4] [10 3 4 5] 4

    //删除第三个元素
    s7 := append(s1[:2], s1[3:]...)
    fmt.Println(s7) //[1 10 4 5]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容