【发布时间】:2013-09-17 15:33:45
【问题描述】:
这是允许的:
package main
var a = 3
...
但这不是:
package main
a := 3
...
为什么不呢?为什么不能将函数外部的短变量声明视为没有类型的常规声明?只是为了简化解析?
【问题讨论】:
标签: go
这是允许的:
package main
var a = 3
...
但这不是:
package main
a := 3
...
为什么不呢?为什么不能将函数外部的短变量声明视为没有类型的常规声明?只是为了简化解析?
【问题讨论】:
标签: go
据 Ian Lance Taylor 在公告后不久在this thread 中所说:
在顶层,每个声明都以关键字开头。这简化了解析。
【讨论】:
引用The Go Programming Language Specification:
短变量声明只能出现在函数内部。在一些 上下文,例如“if”、“for”或“switch”的初始值设定项 语句,它们可用于声明局部临时变量。
您可以将var 语句视为const、type 和func,在包级别中您必须指定要声明的语句类型。
好吧,这不是真正的速记,a, b := 12 无法编译,var a,b = 12 可以。
【讨论】:
在函数之外,每个语句都必须以关键字(var、func 等)开头,因此 := 构造不可用。
见here。希望对您有所帮助。
【讨论】: