【问题标题】:Why isn't short variable declaration allowed at package level in Go?为什么 Go 中的包级别不允许短变量声明?
【发布时间】:2013-09-17 15:33:45
【问题描述】:

这是允许的:

package main

var a = 3

...

但这不是:

package main

a := 3

...

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

【问题讨论】:

    标签: go


    【解决方案1】:

    据 Ian Lance Taylor 在公告后不久在this thread 中所说:

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

    【讨论】:

    • 是否有任何解释这如何帮助解析?
    • 仍然没有解释为什么以及如何简化解析......
    【解决方案2】:

    引用The Go Programming Language Specification

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

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

    好吧,这不是真正的速记,a, b := 12 无法编译,var a,b = 12 可以。

    【讨论】:

      【解决方案3】:

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

      here。希望对您有所帮助。

      【讨论】:

      • 嗨@Matt,只是好奇,您编辑我的答案的原因是什么?您能否分享您的反馈,以便我将来改进我的答案。谢谢。
      猜你喜欢
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多