典型的程序使用各種值,這些值在執(zhí)行過程中可能會發(fā)生變化。
例如,對用戶輸入的值執(zhí)行某些操作的程序。一個用戶輸入的值可能與另一個用戶輸入的值不同。因此,這就需要使用變量,因為其他用戶可能不會使用相同的值。當(dāng)一個用戶輸入一個新值將用于在操作的過程中,可以將暫時存儲在計算機的隨機存取存儲器,這些值在執(zhí)行這部分內(nèi)存不同,因此這來的另一個術(shù)語稱為變量。變量是可以在運行時更改的信息的占位符。并且變量允許檢索和處理存儲的信息。
變量命名規(guī)則:
變量名稱必須以字母或下劃線(_)開頭。并且名稱中可能包含字母“ a-z”或“ A-Z”或數(shù)字0-9,以及字符“ _”。
Geeks, geeks, _geeks23 //合法變量 123Geeks, 23geeks // 非法變量
變量名稱不應(yīng)以數(shù)字開頭。
234geeks //非法變量
變量名稱區(qū)分大小寫。
geeks 和Geeks 是兩個不同的變量
關(guān)鍵字不允許用作變量名。
變量名稱的長度沒有限制,但是建議僅使用4到15個字母的最佳長度。
在Go語言中,變量是通過兩種不同的方式創(chuàng)建的:
(一)使用var關(guān)鍵字:在Go語言中,變量是使用特定類型的var關(guān)鍵字創(chuàng)建的,該關(guān)鍵字與變量名關(guān)聯(lián)并賦予其初始值。
語法:
var variable_name type = expression
重要事項:
在上述語法中,類型(type) 或=表達(dá)式可以刪除,但不能同時刪除變量聲明中的兩個。
如果刪除了類型,則變量的類型由表達(dá)式中的值初始化確定。
//變量的概念
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
如果刪除了表達(dá)式,則該變量的類型為零,數(shù)字為零,布爾值為false,字符串為“”,接口和引用類型為nil。因此,在Go語言中沒有這樣的未初始化變量的概念。
package main
import "fmt"
func main() {
//變量聲明和初始化不使用表達(dá)式
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
返回多個值的調(diào)用函數(shù)允許您初始化一組變量。
例如:
//這里,os.Open函數(shù)返回一個 //文件中的i變量和一個錯誤 //在j變量中 var i, j = os.Open(name)
(二)使用短變量聲明:使用短變量聲明來聲明在函數(shù)中聲明和初始化的局部變量。
語法:
variable_name:= expression
注意:請不要在:=和=之間混淆,因為:= 是聲明,而 = 是賦值。
重要事項:
在上面的表達(dá)式中,變量的類型由表達(dá)式的類型確定。
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聲明用于那些需要與初始值設(shè)定項表達(dá)式不同的顯式類型的局部變量,或用于其值稍后分配且初始值不重要的那些變量。
使用短變量聲明,可以在單個聲明中聲明多個變量。
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
在簡短的變量聲明中,允許返回多個值的調(diào)用函數(shù)初始化一組變量。
//這里,os.Open函數(shù)返回一個 //文件中的i變量和一個錯誤 //在j變量中 i, j := os.Open(name)
簡短的變量聲明僅當(dāng)對于已在同一語法塊中聲明的那些變量起作用時,才像賦值一樣。在外部塊中聲明的變量將被忽略。如下面的示例所示,這兩個變量中至少有一個是新變量。
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
使用短變量聲明,可以在單個聲明中聲明不同類型的多個變量。這些變量的類型由表達(dá)式確定。
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