为什么Go中的包级别不允许使用短变量声明?

时间:2013-09-17 15:33:46

标签: go

这是允许的:

package main

var a = 3

...

但这不是:

package main

a := 3

...

为什么不呢?为什么函数外部的短变量声明不能在没有类型的情况下处理常规声明?只是为了简化解析?

3 个答案:

答案 0 :(得分:34)

在公告发布后不久,this thread的Ian Lance Taylor说:

  

在顶层,每个声明都以关键字开头。这简化了解析。

答案 1 :(得分:5)

引用The Go Programming Language Specification

  

短变量声明可能只出现在函数内部。在一些   上下文,例如“if”,“for”或“switch”的初始值设定项   语句,它们可用于声明本地临时变量。

您可以将var语句视为consttypefunc,在包级别中您必须指定您声明的语句类型。< / p>

嗯,这不是一个真正的简写,a, b := 12无法编译,var a,b = 12这样做。

答案 2 :(得分:2)

在函数外部,每个语句必须以关键字(var,func等)开头,因此:=结构不可用。

here。希望它有所帮助。