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

时间:2014-08-27 05:03:07

标签: go

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


b := bytes.Buffer{}

这两个有什么区别? 我在这里试过:http://play.golang.org/p/lnkkULeIYm 没有看到差异。 谢谢,

1 个答案:

答案 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

  

与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初在相同的块中具有相同类型,并且至少有一个非空变量是新的。

     

因此,重新声明只能出现在多变量简短声明中。重新声明不会引入新变量;它只是为原始版本赋予了一个新值。