什么时候在Go中使用var或:=?

时间:2018-11-21 01:59:25

标签: go

以下两个示例之间是否有区别?

type Example struct {}

func main() {
  e := Example{}
}

vs。

type Example struct {}

func main() {
  var e Example
}

有没有更好的选择?

谢谢!

3 个答案:

答案 0 :(得分:3)

可能值得注意:

需要创建带有已定义值的变量时,请使用:=

number := 12
obj := SomeStruct{name: "user"}
slice := []string{"a", "b", "c"}

在需要定义变量而无需初始化时使用var关键字,因此将在其上使用零值。

var a int // the default value will be the zero value of int, which is 0
var mut sync.Mutex
var result []map[string]interface{}

使用var关键字还有另一个优点,例如我们可以在一行中创建一种类型的多个变量。

var result1, result2, result3, result4 []map[string]interface{}

答案 1 :(得分:1)

var主要用于定义共享范围内的变量。例如,

var something string

func init() {
    something = "Hello world!"
}

func main() {
    fmt.Println(something)
}

答案 2 :(得分:1)

这里没有什么不同,只是一种习惯。我经常使用var e Example
:=不能使用外部功能,而var可以使用外部功能。