Go面试题68

Posted by     "richie" on Monday, March 16, 2020

Go面试题68

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

func main() {
    for i := 0; i < 10; i++ {
    loop:
        println(i)
    }
    goto loop
}

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

func main()  {
    x := []int{0,1,2}
    y := [3]*int{}
    for i, v := range x {
        defer func() {
            print(v)
        }()
        y[i] = &v
    }
    print(*y[0],*y[1], *y[2])
}

参考答案及解析

1: 答案及解析: goto 不能跳转到其他函数或者内层代码. 编译错误: goto loop jumps into block starting at

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

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付