1.下面代码有什么问题吗?

1func main()  {
2
3 for i:=0;i<10 ;i++ {
4 loop:
5 println(i)
6 }
7 goto loop
8}

参考答案及解析:goto 不能跳转到其他函数或者内层代码。编译报错:

1goto loop jumps into block starting at

2.下面代码输出什么,请说明。

1func main() {
2 x := []int{0, 1, 2}
3 y := [3]*int{}
4 for i, v := range x {
5 defer func() {
6 print(v)
7 }()
8 y[i] = &v
9 }
10 print(*y[0], *y[1], *y[2])
11}

参考答案及解析:22222。知识点:defer()、for-range。for-range 虽然使用的是 :=,但是 v 不会重新声明,可以打印 v 的地址验证下。

解析若有不妥之处,欢迎在留言区交流、指正!

看下今天的题目:

  • A
1var s []int
2s = append(s,1)
  • B
1var m map[string]int
2m["one"] = 1
  • C
1var s []int
2s = make([]int, 0)
3s = append(s,1)
  • D
1var m map[string]int
2m = make(map[string]int)
3m["one"] = 1

2.下面代码输出什么?

1func test(x int) (func(), func()) {
2 return func() {
3 println(x)
4 x += 10
5 }, func() {
6 println(x)
7 }
8}
9
10func main() {
11 a, b := test(100)
12 a()
13 b()
14}

答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!