根据Go参考,有两种声明变量的方法
Variable_declarations(格式为var count = 0或var count int)
和
Short_variable_declarations(格式为count := 0)
我发现决定使用哪一个是非常令人困惑的.
我所知道的差异(到现在为止)是:
count := 0在函数范围内使用格式.count := 0可以 在多变量简短声明中重新声明.但就我所知,他们的行为确实相同.在参考文献中它还说:
它(
count:=0方式)是具有初始化表达式但没有类型的常规变量声明的简写
我的困惑是:
在此处的Go Web服务器示例中:http://golang.org/doc/effective_go.html#web_server
以下代码行有效
var addr = flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
但改变它
addr := flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
是一个编译错误.为什么?是否与函数的返回类型*string而不是面部有什么关系string?这有什么不同?
更新:感谢您指出:=顶层不允许这样做.知道为什么这种不一致性在规范中?我没有看到任何理由在块内部行为有所不同.