猿问

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

这是允许的:


package main


var a = 3


...

但这不是:


package main


a := 3


...

为什么不?为什么不能将函数外的短变量声明视为没有类型的常规声明?只是为了简化解析?


慕妹3146593
浏览 229回答 3
3回答

犯罪嫌疑人X

根据伊恩·兰斯·泰勒 (Ian Lance Taylor) 在公开声明后不久在此线程中的说法:在顶层,每个声明都以关键字开头。这简化了解析。

翻阅古今

引用Go 编程语言规范:短变量声明只能出现在函数内部。在某些上下文中,例如“if”、“for”或“switch”语句的初始值设定项,它们可用于声明局部临时变量。您可以考虑var像const, type, andfunc之类的语句,在包级别中,您必须指定要声明的语句类型。嗯,这不是一个真正的速记, a, b := 12不能编译,var a,b = 12做。

qq_花开花谢_0

在函数外部,每个语句都必须以关键字(var、func 等)开头,因此该:=构造不可用。见这里。希望能帮助到你。
随时随地看视频慕课网APP

相关分类

Go
我要回答