在 Go 语言中,= 和 := 是两种不同的运算符,它们用于变量的赋值,但各自的用途和上下文有所不同。
=是赋值运算符,它用于给已经声明的变量赋予新的值。在使用=之前,必须已经有一个变量的声明存在。例如:
govar x int x = 1 // 将值 1 赋给已声明的变量 x
在这个例子中,x 首先被声明为 int 类型,然后我们用 = 将值 1 赋给 x。
:=是短变量声明运算符,它用于同时声明和初始化变量。如果在函数内部,你想声明一个新的局部变量并且立即给它赋值,你可以使用:=这样做。这样,就不需要显式地声明变量类型,因为 Go 会自动根据右侧表达式的类型来推断变量的类型。例如:
gox := 1 // 同时声明变量 x 并赋值为 1
在此例子中,我们没有显式地声明 x 是 int 类型;Go 自动推断出 x 的类型为 int,因为我们将一个整数 1 赋给了 x。
需要注意的是,:= 仅能用于函数内部,而 = 可以用于任何地方对变量进行赋值。此外,:= 不能用于已经声明过的变量,否则会引发编译错误。但是,如果在相同的作用域中,存在多个新的变量,并且只有其中一个是新的,则可以使用 :=,例如:
govar a int a, b := 1, 2 // 这里 a 是之前声明的变量,而 b 是新声明的变量
在这个例子中,a 已经事先声明过了,而 b 是新声明的变量,所以可以使用 := 运算符。
总结来说,= 是用于给已经存在的变量赋值的,而 := 是用于声明新变量的同时给它赋值。