向Slice添加元素

// Slice是对数组的view s4 s5 超出了原arr数组的view,所以他们会组成一个新数组
arr := [...]int{0,1,2,3,4,5,6,7}
s1 := arr[2:6]
s2 := s1[3:5]
s3 := append(s2,10)
s4 := append(s3,11)
s5 := append(s4,12)

s2输出为: [5 6]
s3输出为: [5 6 10]
s4输出为: [5 6 10 11]
s5输出为: [5 6 10 11 12]
append后arr为:[0 1 2 3 4 5 6 10]

创建一个Slice

func main(){
    var s []int // go语言没有nil用0表示没有

        s1 := []int{2,4,6,8}

        s2 := make([]int,16) //长度16

        s3 := make([]int,10,32) //长度是10 cap为32

        s1为 [2 4 6 8] len为4 cap为4
        s2为[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] len为16 cap为16
        s3为[0 0 0 0 0 0 0 0 0 0] len为10 cap为32
    }

}

Slice的copy、delete和pop


// Slice的copy
    s1 := []int{2,4,6,8}
    s2 := make([]int,16) //长度16
    copy(s2, s1) //把s1拷贝进s2中

    //结果为 s2 = [2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0]

//Sclice的delete
s2 = append(s2[:3], s2[4:]...)  //第三位数字8被跳过  append第二个参数需要一个可变参数 在s2[4:]加上...即可

    //结果为 s2 = [2 4 6  0 0 0 0 0 0 0 0 0 0 0 0]

//Slice的pop

front := s2[0] //取坐标为0的  结果为 2
s2 = s2[1:] //取坐标为1后面的  结果为 [4 6 0 0 0 0 0 0 0 0 0 0 0 0]
tail := s2[len(s2)-1] //取坐标最后一个 结果为 0
s2 = s2[:len(s2)-1] //取最后一个坐标之前的 结果为 [4 6 0 0 0 0 0 0 0 0 0 0 0]