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