这是允许的:
package main
var a = 3
...
但这不是:
package main
a := 3
...
为什么不?为什么不能将函数外部的短变量声明视为没有类型的常规声明?只是为了简化解析?
这是允许的:
package main
var a = 3
...
但这不是:
package main
a := 3
...
为什么不?为什么不能将函数外部的短变量声明视为没有类型的常规声明?只是为了简化解析?
根据伊恩·兰斯·泰勒(Ian Lance Taylor)在公开声明后不久在此线程中的说法:
在顶层,每个声明都以关键字开头。这简化了解析。
引用Go 编程语言规范:
短变量声明可能只出现在函数内部。在某些上下文中,例如“if”、“for”或“switch”语句的初始值设定项,它们可用于声明局部临时变量。
您可以在包级别考虑var
类似const
、type
和的语句,func
您必须指定要声明的语句类型。
好吧,这不是一个真正的速记, a, b := 12
不能编译,var a,b = 12
做。
在函数之外,每个语句都必须以关键字(var、func 等)开头,因此该:=
构造不可用。
见这里。希望能帮助到你。