var b bytes.Buffer // A Buffer needs no initialization.
b := bytes.Buffer{}
这两个有什么区别呢? 我尝试了这里:http://play.golang.org/p/lnkkULeIYm 没有看到任何不同之处。 谢谢。
var b bytes.Buffer // A Buffer needs no initialization.
b := bytes.Buffer{}
:=
是 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可以看出:与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初在同一块中以相同的类型声明,并且至少有一个非空白变量是新的。因此,重新声明只能出现在多变量短声明中。重新声明不会引入新变量,它只是为原始变量分配一个新值。
b := []byte{}
就是var b []byte
-- 我经常在任何可以使用它的地方都喜欢使用:=
语法(正如 OneOfOne 所指出的那样,并非所有地方都可以使用)。 - twotwotwo