1.下面的代码输出什么?
1type T struct {
2 n int
3}
4
5func main() {
6 ts := [2]T{}
7 for i := range ts[:] {
8 switch i {
9 case 0:
10 ts[1].n = 9
11 case 1:
12 fmt.Print(ts[i].n, " ")
13 }
14 }
15 fmt.Print(ts)
16}
参考答案及解析:9 [{0} {9}]。知识点:for-range 切片。for-range 切片时使用的是切片的副本,但不会复制底层数组,换句话说,此副本切片与原数组共享底层数组。
2.下面的代码输出什么?
1type T struct {
2 n int
3}
4
5func main() {
6 ts := [2]T{}
7 for i := range ts[:] {
8 switch t := &ts[i]; i {
9 case 0:
10 t.n = 3;
11 ts[1].n = 9
12 case 1:
13 fmt.Print(t.n, " ")
14 }
15 }
16 fmt.Print(ts)
17}
参考答案及解析:9 [{3} {9}]。知识点:for-range 切片。参考前几道题的解析,这道题的答案应该很明显。
引自《Go语言101》
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1func main() {
2
3 for i:=0;i<10 ;i++ {
4 loop:
5 println(i)
6 }
7 goto loop
8}
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}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!