典型的程序使用各種值,這些值在執(zhí)行過程中可能會發(fā)生變化。
例如,對用戶輸入的值執(zhí)行某些操作的程序。一個用戶輸入的值可能與另一個用戶輸入的值不同。因此,這就需要使用變量,因為其他用戶可能不會使用相同的值。當一個用戶輸入一個新值將用于在操作的過程中,可以將暫時存儲在計算機的隨機存取存儲器,這些值在執(zhí)行這部分內存不同,因此這來的另一個術語稱為變量。變量是可以在運行時更改的信息的占位符。并且變量允許檢索和處理存儲的信息。
變量命名規(guī)則:
變量名稱必須以字母或下劃線(_)開頭。并且名稱中可能包含字母“ a-z”或“ A-Z”或數(shù)字0-9,以及字符“ _”。
Geeks, geeks, _geeks23 //合法變量 123Geeks, 23geeks // 非法變量
變量名稱不應以數(shù)字開頭。
234geeks //非法變量
變量名稱區(qū)分大小寫。
geeks 和Geeks 是兩個不同的變量
關鍵字不允許用作變量名。
變量名稱的長度沒有限制,但是建議僅使用4到15個字母的最佳長度。
在Go語言中,變量是通過兩種不同的方式創(chuàng)建的:
(一)使用var關鍵字:在Go語言中,變量是使用特定類型的var關鍵字創(chuàng)建的,該關鍵字與變量名關聯(lián)并賦予其初始值。
語法:
var variable_name type = expression
重要事項:
在上述語法中,類型(type) 或=表達式可以刪除,但不能同時刪除變量聲明中的兩個。
如果刪除了類型,則變量的類型由表達式中的值初始化確定。
//變量的概念 package main import "fmt" func main() { //變量聲明和初始化 //顯式類型 var myvariable1 = 20 var myvariable2 = "nhooo" var myvariable3 = 34.80 // Display the value and the // type of the variables fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable1的類型是 : %T\n", myvariable1) fmt.Printf("myvariable2的值是 : %s\n", myvariable2) fmt.Printf("myvariable2的類型是 : %T\n", myvariable2) fmt.Printf("myvariable3的值是 : %f\n", myvariable3) fmt.Printf("myvariable3的類型是 : %T\n", myvariable3) }
輸出:
myvariable1的值是 : 20 myvariable1的類型是 : int myvariable2的值是 : nhooo myvariable2的類型是 : string myvariable3的值是 : 34.800000 myvariable3的類型是 : float64
如果刪除了表達式,則該變量的類型為零,數(shù)字為零,布爾值為false,字符串為“”,接口和引用類型為nil。因此,在Go語言中沒有這樣的未初始化變量的概念。
package main import "fmt" func main() { //變量聲明和初始化不使用表達式 var myvariable1 int var myvariable2 string var myvariable3 float64 //顯示0值變量 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable2的值是 : %d\n", myvariable2) fmt.Printf("myvariable3的值是 : %d\n", myvariable3) }
輸出:
myvariable1的值是 : 0 myvariable2的值是 : %!d(string=) myvariable3的值是 : %!d(float64=0)
如果使用類型,則可以在單個聲明中聲明相同類型的多個變量。
package main import "fmt" func main() { // 在一行上同時聲明和初始化多個類型相同的變量 var myvariable1, myvariable2, myvariable3 int = 2, 454, 67 // 輸出變量的值 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable2的值是 : %d\n", myvariable2) fmt.Printf("myvariable3的值是 : %d\n", myvariable3) }
輸出:
myvariable1的值是 : 2 myvariable2的值是 : 454 myvariable3的值是 : 67
如果刪除類型,則可以在單個聲明中聲明不同類型的多個變量。變量的類型由初始化值確定。
package main import "fmt" func main() { //多個不同類型的變量 //在單行中聲明和初始化 var myvariable1, myvariable2, myvariable3 = 2, "GFG", 67.56 // 打印變量值和類型 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable1的類型是 : %T\n", myvariable1) fmt.Printf("\nmyvariable2的值是 : %s\n", myvariable2) fmt.Printf("myvariable2的類型是 : %T\n", myvariable2) fmt.Printf("\nmyvariable3的值是 : %f\n", myvariable3) fmt.Printf("myvariable3的類型是 : %T\n", myvariable3) }
輸出:
myvariable1的值是 : 2 myvariable1的類型是 : int myvariable2的值是 : GFG myvariable2的類型是 : string myvariable3的值是 : 67.560000 myvariable3的類型是 : float64
返回多個值的調用函數(shù)允許您初始化一組變量。
例如:
//這里,os.Open函數(shù)返回一個 //文件中的i變量和一個錯誤 //在j變量中 var i, j = os.Open(name)
(二)使用短變量聲明:使用短變量聲明來聲明在函數(shù)中聲明和初始化的局部變量。
語法:
variable_name:= expression
注意:請不要在:=和=之間混淆,因為:= 是聲明,而 = 是賦值。
重要事項:
在上面的表達式中,變量的類型由表達式的類型確定。
package main import "fmt" func main() { // 使用短變量聲明 myvariable1 := 39 myvariable2 := "(cainiaoplus.com)" myvariable3 := 34.67 // 打印變量值和類型 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable1的類型是 : %T\n", myvariable1) fmt.Printf("\nmyvariable2的值是 : %s\n", myvariable2) fmt.Printf("myvariable2的類型是 : %T\n", myvariable2) fmt.Printf("\nmyvariable3的值是 : %f\n", myvariable3) fmt.Printf("myvariable3的類型是 : %T\n", myvariable3) }
輸出:
myvariable1的值是 : 39 myvariable1的類型是 : int myvariable2的值是 : (cainiaoplus.com) myvariable2的類型是 : string myvariable3的值是 : 34.670000 myvariable3的類型是 : float64
由于它們的簡潔性和靈活性,大多數(shù)局部變量都是使用短變量聲明來聲明和初始化的。
變量的var聲明用于那些需要與初始值設定項表達式不同的顯式類型的局部變量,或用于其值稍后分配且初始值不重要的那些變量。
使用短變量聲明,可以在單個聲明中聲明多個變量。
package main import "fmt" func main() { //在單行中聲明和初始化變量 //使用簡短的變量聲明 //多個相同類型的變量 myvariable1, myvariable2, myvariable3 := 800, 34.7, 56.9 // 打印變量值和類型 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable1的類型是 : %T\n", myvariable1) fmt.Printf("\nmyvariable2的值是 : %f\n", myvariable2) fmt.Printf("myvariable2的類型是 : %T\n", myvariable2) fmt.Printf("\nmyvariable3的值是 : %f\n", myvariable3) fmt.Printf("myvariable3的類型是 : %T\n", myvariable3) }
輸出:
myvariable1的值是 : 800 myvariable1的類型是 : int myvariable2的值是 : 34.700000 myvariable2的類型是 : float64 myvariable3的值是 : 56.900000 myvariable3的類型是 : float64
在簡短的變量聲明中,允許返回多個值的調用函數(shù)初始化一組變量。
//這里,os.Open函數(shù)返回一個 //文件中的i變量和一個錯誤 //在j變量中 i, j := os.Open(name)
簡短的變量聲明僅當對于已在同一語法塊中聲明的那些變量起作用時,才像賦值一樣。在外部塊中聲明的變量將被忽略。如下面的示例所示,這兩個變量中至少有一個是新變量。
package main import "fmt" func main() { //使用簡短的變量聲明 //這里,短變量聲明動作 //作為myvar2變量的賦值 //因為相同的變量存在于同一塊中 //因此myvar2的值從45更改為100 myvar1, myvar2 := 39, 45 myvar3, myvar2 := 45, 100 //如果您嘗試運行注釋行, //然后編譯器將給出錯誤,因為 //這些變量已經(jīng)定義,例如 // myvar1,myvar2:= 43,47 // myvar2:= 200 // 打印變量值 fmt.Printf("myvar1 和 myvar2 的值 : %d %d\n", myvar1, myvar2) fmt.Printf("myvar3 和 myvar2 的值 : %d %d\n", myvar3, myvar2) }
輸出:
myvar1 和 myvar2 的值 : 39 100 myvar3 和 myvar2 的值 : 45 100
使用短變量聲明,可以在單個聲明中聲明不同類型的多個變量。這些變量的類型由表達式確定。
package main import "fmt" func main() { //在單行中聲明和初始化 //使用簡短的變量聲明 //多個不同類型的變量 myvariable1, myvariable2, myvariable3 := 800, "NHOOO", 47.56 // 打印變量值和類型 fmt.Printf("myvariable1的值是 : %d\n", myvariable1) fmt.Printf("myvariable1的類型是 : %T\n", myvariable1) fmt.Printf("\nmyvariable2的值是 : %s\n", myvariable2) fmt.Printf("myvariable2的類型是 : %T\n", myvariable2) fmt.Printf("\nmyvariable3的值是 : %f\n", myvariable3) fmt.Printf("myvariable3的類型是 : %T\n", myvariable3) }
輸出:
myvariable1的值是 : 800 myvariable1的類型是 : int myvariable2的值是 : NHOOO myvariable2的類型是 : string myvariable3的值是 : 47.560000 myvariable3的類型是 : float64