这是允许的:
package main
var a = 3
...
但这不是:
package main
a := 3
...
为什么不呢?为什么函数外部的短变量声明不能在没有类型的情况下处理常规声明?只是为了简化解析?
答案 0 :(得分:34)
在公告发布后不久,this thread的Ian Lance Taylor说:
在顶层,每个声明都以关键字开头。这简化了解析。
答案 1 :(得分:5)
引用The Go Programming Language Specification:
短变量声明可能只出现在函数内部。在一些 上下文,例如“if”,“for”或“switch”的初始值设定项 语句,它们可用于声明本地临时变量。
您可以将var
语句视为const
,type
和func
,在包级别中您必须指定您声明的语句类型。< / p>
嗯,这不是一个真正的简写,a, b := 12
无法编译,var a,b = 12
这样做。
答案 2 :(得分:2)
在函数外部,每个语句必须以关键字(var,func等)开头,因此:=
结构不可用。
见here。希望它有所帮助。