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

Eva*_*sso 3 go

下面两个例子有什么区别吗?

type Example struct {}

func main() {
  e := Example{}
}
Run Code Online (Sandbox Code Playgroud)

对比

type Example struct {}

func main() {
  var e Example
}
Run Code Online (Sandbox Code Playgroud)

有更好的吗?

谢谢!

nov*_*ung 17

可能值得注意:

使用:=时,你需要创建一个变量上有一个定义的值。

number := 12
obj := SomeStruct{name: "user"}
slice := []string{"a", "b", "c"}
someNilPointerData := (*SomeStruct)(nil)
Run Code Online (Sandbox Code Playgroud)

var当您需要在没有任何初始化的情况下定义变量时使用关键字,因此将在其上使用零值。

var a int // zero value of int is 0
var mut sync.Mutex
var result []map[string]interface{}
Run Code Online (Sandbox Code Playgroud)

使用var关键字的另一个优点,在单个语句中创建多个相同类型的变量。

var result1, result2, result3, result4 []map[string]interface{}
Run Code Online (Sandbox Code Playgroud)

var关键字还可用于将某些文字值存储在具有不同数据类型的变量中。

// store string literal value in interface{} variable
var anyValue interface{} = "hello world"

// store int literal value in float64 variable
var otherValue float64 = 12
Run Code Online (Sandbox Code Playgroud)