本文共 1522 字,大约阅读时间需要 5 分钟。
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
1.下面的代码输出什么?
1type T struct { 2 n int 3} 4 5func main() { 6 ts := [2]T{} 7 for i, t := range ts { 8 switch i { 9 case 0:10 t.n = 311 ts[1].n = 912 case 1:13 fmt.Print(t.n, " ")14 }15 }16 fmt.Print(ts)17}
参考答案及解析:0 [{0} {9}]。知识点:for-range 循环数组。此时使用的是数组 ts 的副本,所以 t.n = 3 的赋值操作不会影响原数组。
2.下面的代码输出什么?
1type T struct { 2 n int 3} 4 5func main() { 6 ts := [2]T{} 7 for i, t := range &ts { 8 switch i { 9 case 0:10 t.n = 311 ts[1].n = 912 case 1:13 fmt.Print(t.n, " ")14 }15 }16 fmt.Print(ts)17}
参考答案及解析:9 [{0} {9}]。知识点:for-range 数组指针。for-range 循环中的循环变量 t 是原数组元素的副本。如果数组元素是结构体值,则副本的字段和原数组字段是两个不同的值。
均引自《Go语言101》
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
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 = 911 case 1:12 fmt.Print(ts[i].n, " ")13 }14 }15 fmt.Print(ts)16}
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 = 912 case 1:13 fmt.Print(t.n, " ")14 }15 }16 fmt.Print(ts)17}
引自《Go语言101》
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
转载地址:http://fzfnb.baihongyu.com/