func main(){
s1 :=make([]int,0,5)
s1 =append(s1,1,2,3)
s2 :=append(s1,4,5)
fmt.Println(s2) //[1 2 3 4 5]
s3 :=append(s1,6) //此处相当于对s2指向的数组(s1追加个6,第思维就变成了6,并非是在4,5后面追加6)再做修改
fmt.Println(s1) //[1 2 3]
fmt.Println(s2)//[1 2 3 6 5]
fmt.Println(s3)//[1 2 3 6]
}
因为s2和s3 未超过切片长度,不需要扩容,所以append就会在原数组上修改( 但是此时看地址,发现已经和s1不是同一内存地址了)
下面看看需要扩容的情况
func main(){
s1 :=make([]int,0,5)
s1 =append(s1,1,2,3)
s2 :=append(s1,4,5,6)
fmt.Println(s2)//[1 2 3 4 5 6]
s3 :=append(s1,6)
fmt.Println(s1)//[1 2 3]
fmt.Println(s2)//[1 2 3 4 5 6]
fmt.Println(s3)//[1 2 3 6]
}