0
点赞
收藏
分享

微信扫一扫

Go 面试每天一篇(第 51 天)



你好哇,欢迎来答题,一起来看下

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 }
13
14 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 }
10
11 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 false
10 }
11
12 fmt.Println(isMatch(1)) // true
13 fmt.Println(isMatch(2)) // true
14
15 match := func(i int) bool {
16 switch(i) {
17 case 1,2:
18 return true
19 }
20 return false
21 }
22
23 fmt.Println(match(1)) // true
24 fmt.Println(match(2)) // true
25}

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

看下今天的题目:

1func main() {
2 var fn1 = func() {}
3 var fn2 = func() {}
4
5 if fn1 != fn2 {
6 println("fn1 not equal fn2")
7 }
8}

2.下面代码输出什么?



  • A. 1
  • B. compilation error


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





Go 面试每天一篇(第 51 天)_数组


Go 面试每天一篇(第 51 天)_字段_02


举报

相关推荐

0 条评论