用append向slice添加元素

题目:

下面两段代码输出什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
// 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
2
1.[0 0 0 0 0 1 2 3]
2.[1 2 3 4]

解析:

  1. 创建了一个长度为5的整数切片因为是使用make创建了,故是创建并初始化为0,然后将1、2、3三个整数追加到切片的末尾,最终输出切片的所有元素。由于append函数会自动扩容切片,因此最终输出的是一个长度为8的整数切片,包含5个0和1、2、3三个整数。
  2. 这段代码创建了一个空的整数切片,然后将1、2、3、4四个整数追加到切片的末尾,最终输出切片的所有元素。由于append函数会自动扩容切片,因此最终输出的是一个长度为4的整数切片,包含1、2、3、4四个整数。

用append向slice添加元素
http://example.com/2023/05/03/Go每日一题/用append向slice添加元素/
作者
Feng Tao
发布于
2023年5月3日
更新于
2023年5月3日
许可协议