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
的地址验证下.
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
