3 回答
TA贡献1845条经验 获得超8个赞
=是赋值。更多关于 Go 中的作业:作业
之间的微妙差异=,并:=当=在变量声明使用。
Go中变量声明的一般形式是:
var name type = expression
上面的声明创建了一个特定类型的变量,为其附加了一个名称,并设置了它的初始值。thetype或 the= expression可以省略,但不能两者都省略。
例如:
var x int = 1
var a int
var b, c, d = 3.14, "stackoverflow", true
:=被称为short variable declaration采取形式
name := expression
并且名称的类型由表达式的类型决定
注意::=是声明,而是=赋值
因此,一个简短的变量声明必须至少声明一个新变量。这意味着一个简短的变量声明不一定会在其左侧声明所有变量,当其中一些变量已经在同一个词法块中声明时,:=就像对这些变量的赋值一样
例如:
r := foo() // ok, declare a new variable r
r, m := bar() // ok, declare a new variable m and assign r a new value
r, m := bar2() //compile error: no new variables
此外,:=可能只出现在函数内部。在某些上下文中,例如“if”、“for”或“switch”语句的初始值设定项,它们可用于声明局部临时变量。
TA贡献1946条经验 获得超4个赞
= 只是分配
:= 是功能块(非全局)内新变量(至少一个新变量)的声明和初始化构造:
var u1 uint32 //declare a variable and init with 0
u1 = 32 //assign its value
var u2 uint32 = 32 //declare a variable and assign its value at once
//declare a new variable with defining data type:
u3 := uint32(32) //inside the function block this is equal to: var u3 uint32 = 32
fmt.Println(u1, u2, u3) //32 32 32
//u3 := 20//err: no new variables on left side of :=
u3 = 20
fmt.Println(u1, u2, u3) //32 32 20
u3, str4 := 100, "str" // at least one new var
fmt.Println(u1, u2, u3, str4) //32 32 100 str
TA贡献1725条经验 获得超7个赞
在函数内部,:=可以使用简短的赋值语句代替具有隐式类型的 var 声明。
例如:
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
注意:声明的变量:=只能在功能块内部使用。
- 3 回答
- 0 关注
- 116 浏览
添加回答
举报