函数外的变量声明快捷方式

时间:2014-11-26 16:28:31

标签: go

来自Java和C#的背景我很高兴Golang能够使用快捷方法对函数内的私有变量进行变量声明,这让我可以写:

x := 1.5

它让我想起了用Python等动态语言打字的鸭子。但是,在声明函数范围之外的全局变量时,您仍然需要使用更详细的语法:

var x float64 = 1.5

我只是想知道为什么快捷方法适用于私有变量而不是全局变量?我知道这种语言的设计者非常有经验,所以我假设这并不能反映出一个被忽视的特征。是否存在技术上的原因,为什么这种类型推断(我意识到:=快捷方式与正确的类型推断不同)不会在全球范围内工作?它在设计方面似乎有些不一致,作为一个没有经验的Gopher,我必须承认在某些情况下被这个抛弃了。总的来说,我真的很喜欢Go。

2 个答案:

答案 0 :(得分:5)

在这个帖子中查看Ian的答案: https://groups.google.com/forum/#!msg/golang-nuts/qTZemuGDV6o/IyCwXPJsUFIJ

  

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

答案 1 :(得分:1)

实际上,在许多情况下,您不需要指定类型。

var x = 1.5

应该可以正常工作。它可能尽可能短,并且它不会比局部变量快捷方式长。 因此全球有一条捷径。

至于为什么:=无法使用,我猜测调出var会使代码结构更加一致,因为其他全局构造以关键字func开头, constimporttype