package
0.0.0-20240429050328-3be44a187b12
Repository: https://github.com/robertwang/golang_study.git
Documentation: pkg.go.dev

# README

Go 每日一题

今日(2023-08-22)的题目如下

下面两段代码输出什么。

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

参考解析:这道题考的是使用 append 向 slice 添加元素,第一段代码常见的错误是 [1 2 3],需要注意。


27 楼

s := make([]int, 5)

这里是初始化切片 s 的长度为 5(当然容量也为 5),其中 int 类型的零值当然是 0 啦,所以 s 是[0 0 0 0 0]

31 楼

make(T[], len, cap) 创建切片,其中:

  • T:切片的元素类型
  • len:切片的实际长度
  • cap:切片的最大容量

注意:当 cap 不传值的话,默认 len=cap。

举例:s := make(int[], 5)。此时 s 的值为 [0 0 0 0 0]