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條經驗 獲得超8個贊
在函數內部,:=可以使用簡短的賦值語句代替具有隱式類型的 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 關注
- 137 瀏覽
添加回答
舉報