// 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]
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
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]