Golang中的短變量聲明運(yùn)算符(:=)用于創(chuàng)建具有適當(dāng)名稱(chēng)和初始值的變量。 使用此操作符的主要目的是在函數(shù)內(nèi)聲明和初始化局部變量,并縮小變量的作用域。變量的類(lèi)型由表達(dá)式的類(lèi)型決定。var關(guān)鍵字還用于創(chuàng)建特定類(lèi)型的變量。所以你可以說(shuō)在Golang中有兩種創(chuàng)建變量的方法,如下所示:
使用var關(guān)鍵字
使用短變量聲明運(yùn)算符(:=)
在本文中,我們將僅討論短變量聲明運(yùn)算符。要了解var關(guān)鍵字,可以在Go中引用var關(guān)鍵字。
使用短變量聲明運(yùn)算符的語(yǔ)法:
variable_name := 表達(dá)式 或 值
在這里,必須在聲明后立即初始化變量,無(wú)需提及變量的類(lèi)型, 右側(cè)的表達(dá)式或值用于評(píng)估變量的類(lèi)型。而使用var關(guān)鍵字可以避免在聲明時(shí)進(jìn)行初始化
示例:在這里,我們使用短聲明運(yùn)算符聲明變量,而未指定變量的類(lèi)型。變量的類(lèi)型由:=運(yùn)算符右側(cè)的表達(dá)式類(lèi)型決定。
package main import "fmt" func main() { //聲明和初始化變量 a := 30 //接受一個(gè)字符串變量 Language := "Go 語(yǔ)言菜鳥(niǎo)教程" fmt.Println("a的值為: ", a) fmt.Println("Language的值: ", Language) }
輸出:
a的值為: 30 Language的值: Go 語(yǔ)言菜鳥(niǎo)教程
短聲明運(yùn)算符也可以用于在單個(gè)聲明中聲明相同類(lèi)型或不同類(lèi)型的多個(gè)變量。這些變量的類(lèi)型由:=運(yùn)算符右側(cè)的表達(dá)式評(píng)估。
package main import "fmt" func main() { //多個(gè)相同類(lèi)型的變量(int) nhooo1, nhooo2, nhooo3 := 117, 7834, 5685 //不同類(lèi)型的多個(gè)變量 nhooo4, nhooo5, nhooo6 := "GFG", 859.24, 1234 //顯示值和變量類(lèi)型 fmt.Printf("nhooo1 的值為 : %d\n", nhooo1) fmt.Printf("nhooo1 的類(lèi)型為 : %T\n", nhooo1) fmt.Printf("\nnhooo2 的值為 : %d\n", nhooo2) fmt.Printf("nhooo2 的類(lèi)型為 : %T\n", nhooo2) fmt.Printf("\nnhooo3 的值為 : %d\n", nhooo3) fmt.Printf("nhooo3 的類(lèi)型為 : %T\n", nhooo3) fmt.Printf("\nnhooo4 的值為 : %s\n", nhooo4) fmt.Printf("nhooo4 的類(lèi)型為 : %T\n", nhooo4) fmt.Printf("\nnhooo5 的值為 : %f\n", nhooo5) fmt.Printf("nhooo5 的類(lèi)型為 : %T\n", nhooo5) fmt.Printf("\nnhooo6 的值為 : %d\n", nhooo6) fmt.Printf("nhooo6 的類(lèi)型為 : %T\n", nhooo6) }
輸出:
nhooo1 的值為 : 117 nhooo1 的類(lèi)型為 : int nhooo2 的值為 : 7834 nhooo2 的類(lèi)型為 : int nhooo3 的值為 : 5685 nhooo3 的類(lèi)型為 : int nhooo4 的值為 : GFG nhooo4 的類(lèi)型為 : string nhooo5 的值為 : 859.240000 nhooo5 的類(lèi)型為 : float64 nhooo6 的值為 : 1234 nhooo6 的類(lèi)型為 : int
借助短變量聲明操作符(:=),您只能聲明僅具有塊級(jí)作用域的局部變量。通常,局部變量在功能塊內(nèi)部聲明。如果嘗試使用short聲明運(yùn)算符聲明全局變量,則會(huì)拋出錯(cuò)誤消息。
package main import "fmt" //使用var關(guān)鍵字進(jìn)行聲明 //并初始化變量 //它是包變量,或者你可以說(shuō)全局范圍 var nhooo1 = 900 //使用簡(jiǎn)短的變量聲明 //它會(huì)拋出一個(gè)錯(cuò)誤 nhooo2 := 200 func main() { //在函數(shù)內(nèi)部訪問(wèn)nhooo1 fmt.Println(nhooo1) // 在函數(shù)內(nèi)部訪問(wèn)nhooo2 fmt.Println(nhooo2) }
輸出錯(cuò)誤:
.\test.go:12:1: syntax error: non-declaration statement outside function body #.\test.go:12:1:語(yǔ)法錯(cuò)誤:函數(shù)主體外的非聲明語(yǔ)句
package main import "fmt" //使用var聲明一個(gè)全局變量 var nhooo1 = 900 func main() { //使用簡(jiǎn)短的變量聲明 //在主函數(shù)中 //它具有局部作用域,即不能 //在主函數(shù)之外訪問(wèn) nhooo2 := 200 //在函數(shù)內(nèi)部訪問(wèn)nhooo1 fmt.Println(nhooo1) //在函數(shù)內(nèi)部訪問(wèn)nhooo2 fmt.Println(nhooo2) }
輸出:
900 200