来自Java和C#的背景我很高兴Golang能够使用快捷方法对函数内的私有变量进行变量声明,这让我可以写:
x := 1.5
它让我想起了用Python等动态语言打字的鸭子。但是,在声明函数范围之外的全局变量时,您仍然需要使用更详细的语法:
var x float64 = 1.5
我只是想知道为什么快捷方法适用于私有变量而不是全局变量?我知道这种语言的设计者非常有经验,所以我假设这并不能反映出一个被忽视的特征。是否存在技术上的原因,为什么这种类型推断(我意识到:=快捷方式与正确的类型推断不同)不会在全球范围内工作?它在设计方面似乎有些不一致,作为一个没有经验的Gopher,我必须承认在某些情况下被这个抛弃了。总的来说,我真的很喜欢Go。
答案 0 :(得分:5)
在这个帖子中查看Ian的答案: https://groups.google.com/forum/#!msg/golang-nuts/qTZemuGDV6o/IyCwXPJsUFIJ
在顶层,每个声明都以关键字开头。这个 简化了解析。
答案 1 :(得分:1)
实际上,在许多情况下,您不需要指定类型。
var x = 1.5
应该可以正常工作。它可能尽可能短,并且它不会比局部变量快捷方式长。 因此全球有一条捷径。
至于为什么:=
无法使用,我猜测调出var
会使代码结构更加一致,因为其他全局构造以关键字func
开头, const
,import
,type
。