golang append 相关面试题
1. 字节一面append
func main() {
array := make([]int, 0, 2)
array = append(array, 1)
fmt.Println(&array[0])
fmt.Println(array)
fmt.Println("----------------------")
slice := append(array, 2)
fmt.Println(&slice[0])
fmt.Println(slice)
fmt.Printf("len slice = %d; len array = %d \n", len(slice), len(array))
fmt.Println("---------------------------")
slice1 := append(array, 3)
fmt.Println(&slice1[0])
fmt.Println(slice1)
fmt.Println(slice)
}
- 输出结果:
0xc0000a8010
[1]
----------------------
0xc0000a8010
[1 2]
len slice = 2; len array = 1
---------------------------
0xc0000a8010
[1 3]
[1 3]
- 说明:第二次 slice := append(array, 2),赋值给了一个新切片slice,此时对于array切片而言,它的cap依然是2,len依然是1而不是2。对于slice而言,其len=2,已经满了。而第三次对array进行append,既然len是1,那么不需要扩容,直接在第二个位置加上元素。所以结果覆盖了第二次的append
原文地址:https://blog.csdn.net/YiGeiGiaoGiao/article/details/144110013
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!