乐闻世界logo
搜索文章和话题

Golang 中的 = 和 := 运算符有什么区别?

4个答案

1
2
3
4

在 Go 语言中,=:= 是两种不同的运算符,它们用于变量的赋值,但各自的用途和上下文有所不同。

  • = 是赋值运算符,它用于给已经声明的变量赋予新的值。在使用 = 之前,必须已经有一个变量的声明存在。例如:
go
var x int x = 1 // 将值 1 赋给已声明的变量 x

在这个例子中,x 首先被声明为 int 类型,然后我们用 = 将值 1 赋给 x

  • := 是短变量声明运算符,它用于同时声明和初始化变量。如果在函数内部,你想声明一个新的局部变量并且立即给它赋值,你可以使用 := 这样做。这样,就不需要显式地声明变量类型,因为 Go 会自动根据右侧表达式的类型来推断变量的类型。例如:
go
x := 1 // 同时声明变量 x 并赋值为 1

在此例子中,我们没有显式地声明 xint 类型;Go 自动推断出 x 的类型为 int,因为我们将一个整数 1 赋给了 x

需要注意的是,:= 仅能用于函数内部,而 = 可以用于任何地方对变量进行赋值。此外,:= 不能用于已经声明过的变量,否则会引发编译错误。但是,如果在相同的作用域中,存在多个新的变量,并且只有其中一个是新的,则可以使用 :=,例如:

go
var a int a, b := 1, 2 // 这里 a 是之前声明的变量,而 b 是新声明的变量

在这个例子中,a 已经事先声明过了,而 b 是新声明的变量,所以可以使用 := 运算符。

总结来说,= 是用于给已经存在的变量赋值的,而 := 是用于声明新变量的同时给它赋值。

2024年6月29日 12:07 回复

:= 表示声明赋值,而 = 表示简单赋值。

2024年6月29日 12:07 回复

在Go中,:=是用于声明+赋值,而=是仅用于赋值。

例如,var foo int = 10 与 相同foo := 10

2024年6月29日 12:07 回复

:=是声明的简写。

shell
a := 10 b := "gopher"

a将被声明为 anint并用 value 进行初始化,10其中 asb将被声明为字符串并用 value 进行初始化gopher

他们的等价物=

shell
var a = 10 var b = "gopher"

=是赋值运算符。它的使用方式与任何其他语言中的使用方式相同。

当您声明变量并且存在初始值设定项时,您可以省略类型(http://tour.golang.org/#11)。

2024年6月29日 12:07 回复

你的答案