Go 中文网、思否、博客园等平台,内容主要以问答形式记录。如果回答中有错误,欢迎大家指出,共同学习、共同进步。
Go每日一题_004
下面两段代码输出什么。 // 1. func main() { s := make([]int, 5) s = append(s, 1, 2, 3) fmt.Println(s) } // 2. func main() { s := make([]int, 0) s = append(s, 1, 2, 3, 4) fmt.Println(s) } 🔑 答案解析: // 1 [0 0 0 0 0 1 2 3] // 2 [1 2 3 4] 解析:首先了解一下切片的结构。 // runtime/slice.go type slice struct { array unsafe.Pointer // 元素指针 len int // 长度 cap int // 容量 } slice 实际上是一个结构体,包含三个字段:长度、容量、底层数组。 make([]int, 5) 等价于 make([]int, 5, 5),会创建一个 len = 5 cap = 5 的切片。s = append(s, 1, 2, 3) 会在切片长度(5)的后面增加 1, 2, 3。 ...