Golang:var b Buffer和bytes.Buffer{}之间的区别

3
var b bytes.Buffer // A Buffer needs no initialization.


b := bytes.Buffer{}

这两个有什么区别呢? 我尝试了这里:http://play.golang.org/p/lnkkULeIYm 没有看到任何不同之处。 谢谢。

1
没有。类似地,b := []byte{} 就是 var b []byte -- 我经常在任何可以使用它的地方都喜欢使用 := 语法(正如 OneOfOne 所指出的那样,并非所有地方都可以使用)。 - twotwotwo
1个回答

3

:=var 的简写语法,这种情况下,b 是一个零值的 bytes.Buffer

var b bytes.Buffer // is the same as
var b = bytes.Buffer{} // is the same as 
b := bytes.Buffer{}

你不能在函数外使用简写形式,因此对于全局变量,你必须使用var。从http://tip.golang.org/ref/spec#Short_variable_declarations可以看出:与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初在同一块中以相同的类型声明,并且至少有一个非空白变量是新的。因此,重新声明只能出现在多变量短声明中。重新声明不会引入新变量,它只是为原始变量分配一个新值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接