短变量声明的小细节
题目:
下面这段代码输出什么?
1 |
|
- A. 5 5
- B. runtime error
答案解析:
参考答案及解析:B。知识点:变量作用域。问题出在操作符:=
,对于使用:=
定义的变量,如果新变量与同名已定义的变量不在同一个作用域中,那么 Go 会新定义这个变量。
对于本例来说,main() 函数里的 p 是新定义的变量,会遮住全局变量 p,导致执行到bar()
时程序,全局变量 p 依然还是 nil,程序随即 Crash。
正确的做法是将 main() 函数修改为:
1 |
|
这道题目引自 Tony Bai 老师的一篇文章,原文讲的很详细,推荐。
https://tonybai.com/2015/01/13/a-hole-about-variable-scope-in-golang/
短变量声明的小细节
http://example.com/2023/08/04/Go每日一题/短变量声明的小细节/