每次学习并整理一个Golang的知识点,每天进步一点点。今天来学习下make的一个知识点🤔。
代码片段
看如下这段代码,并猜测输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package main
import "fmt"
func makeList() []int {
s := make([]int, 5)
s = append(s, 1, 2, 3)
return s
}
func makeList2() []int {
s := make([]int, 0)
s = append(s, 1, 2, 3)
return s
}
func main() {
s := makeList()
s2 := makeList2()
fmt.Println("打印s:", s)
fmt.Println("打印s2:", s2)
}
|
思考后看答案
答疑解惑
代码执行结果如下:
1
2
|
打印s: [0 0 0 0 0 1 2 3]
打印s2: [1 2 3]
|
你做对了吗?😊
这道题考察的是slice的make和append方法;Go语言提供的内置函数make()可以用于灵活的创建数组切片,s := make([]int, 5)
创建了一个初始元素个数为5的数组切片,且元素初始值为0;append()
函数可以向slice的尾端继续新增元素,从而形成一个新的数组切片;而s := make([]int, 0)
创建了一个初始元素个数为零个的数组切片,即当前存储的元素个数为零,使用append追加元素,所加即所得,不存在初始值为0的元素,所以得到[1 2 3]。
下期提问
观察如下代码片段,判断能否编译通过;如果可以,写出输出结果?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package main
import "fmt"
var (
num = 60
doubleNum := num * 2
)
func main() {
fmt.Println(num, doubleNum)
}
|
答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步。
欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”或扫描下方二维码:
文章作者
xujpxm
上次更新
2020-06-28
许可协议
CC BY-NC-ND 4.0 非商业转载请注明出处(作者,原文链接),商业转载请联系作者授权,谢谢!