本文共 1629 字,大约阅读时间需要 5 分钟。
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
你好哇,欢迎来答题,一起来看下
1.下面这段代码输出什么?
1type T struct { 2 ls []int 3} 4 5func foo(t T) { 6 t.ls[0] = 100 7} 8 9func main() {10 var t = T{11 ls: []int{1, 2, 3},12 }1314 foo(t)15 fmt.Println(t.ls[0])16}
A. 1
B. 100
C. compilation error
参考答案及解析:B。调用 foo() 函数时虽然是传值,但 foo() 函数中,字段 ls 依旧可以看成是指向底层数组的指针。
2.下面代码输出什么?
1func main() { 2 isMatch := func(i int) bool { 3 switch(i) { 4 case 1: 5 case 2: 6 return true 7 } 8 return false 9 }1011 fmt.Println(isMatch(1))12 fmt.Println(isMatch(2))13}
参考答案及解析:false true。Go 语言的 switch 语句虽然没有"break",但如果 case 完成程序会默认 break,可以在 case 语句后面加上关键字 fallthrough,这样就会接着走下一个 case 语句(不用匹配后续条件表达式)。或者,利用 case 可以匹配多个值的特性。
修复代码:
1func main() { 2 isMatch := func(i int) bool { 3 switch(i) { 4 case 1: 5 fallthrough 6 case 2: 7 return true 8 } 9 return false10 }1112 fmt.Println(isMatch(1)) // true13 fmt.Println(isMatch(2)) // true1415 match := func(i int) bool {16 switch(i) {17 case 1,2:18 return true19 }20 return false21 }2223 fmt.Println(match(1)) // true24 fmt.Println(match(2)) // true25}
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1func main() {2 var fn1 = func() {}3 var fn2 = func() {}45 if fn1 != fn2 {6 println("fn1 not equal fn2")7 }8}
2.下面代码输出什么?
A. 1
B. compilation error
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
转载地址:http://swfnb.baihongyu.com/