var b bytes.Buffer // A Buffer needs no initialization.
b := bytes.Buffer{}
这两个有什么区别? 我在这里试过:http://play.golang.org/p/lnkkULeIYm 没有看到差异。 谢谢,
答案 0 :(得分: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:
与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初在相同的块中具有相同类型,并且至少有一个非空变量是新的。
因此,重新声明只能出现在多变量简短声明中。重新声明不会引入新变量;它只是为原始版本赋予了一个新值。