在Go語言中,變數是程式運行過程中,內容可以改變(修改)的量; 變數是程式的基本組成單位,是記憶體中一個資料儲存空間的表示,可以透過變數名稱找到變數值。變數的功能是儲存使用者的數據,是計算機語言中能儲存計算結果或能表示值抽象概念。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
1、概述
變數(Variable)是程式運作過程中,內容可以改變(修改)的量; 變數是程式的基本組成單位,是記憶體中一個資料儲存空間的表示,可以透過變數名稱找到變數值。
變數的功能是儲存使用者的數據,是電腦語言中能儲存計算結果或能表示值抽象概念。
變量,是透過變數的識別碼定位值的過程。變數的記憶體模擬示範:
2、定義:宣告與初始化
// 声明变量,未初始化(默认值初始化)
var name string
// 声明变量,特定值初始化
var user string = "Hank"
Go語言中的變數必須聲明後才可以使用,不能直接使用未定義的變數。
3、型別預設值(零值)
#Go語言的型別預設值如下所示:整數型與浮點型變數的預設值為0。 字串變數的預設值為空字串。 布林型變數預設為 bool。 切片、函數、指標變數的預設為 nil。
Go語言是強型別語言,變數必須有型別,同時變數僅能儲存特定型別的資料。 【相關推薦:Go影片教學】
5、類型推導定義變數時,如果指定了初始值,則可以省略類型的定義,Go語言可以自己由資料推導出類型。語法為:// 声明变量,特定值初始化,类型推导出user为字符串string型
var user = "Hank"
為了簡化定義變數,使用運算子: = 配合類型推導,可以快速完成變數的定義,語法為:user := "hank"
使用var或:=都可以一次定義多個變量,語法為:
varvar (
v1 = 42
v2 = "hank"
)
也可以
var v1, v2 = 42, "hank"
##:=
v1, v2 := 42, "hank"建議使用var() 宣告區塊語法,因為程式碼維護容易。
8、批次賦值
一次為多個變數進行賦值。 (類似短定義。v1, v2, v3 := 42, "hank", false) 當變數定義完畢後,再批量對其賦值,沒有定義功能!語法為:var ( v1 int v2 int ) // 批量赋值 v1, v2 = 42, 1024
此語法,通常配合函數的批次回傳來使用,一次接收多個回傳值,語法為:func main() {
var (
v1 int
v2 int
)
// 调用函数,接收其返回值
v1, v2 = getData()
}
// 返回两个值的函数
func getData() (int, int) {
// 返回了两个值(假设42为最小值,1024为最大值)
return 42, 1024
}
var ( v1 = 42 v2 = 1024 ) // 交换 v1, v2 = v2, v1執行後,v1==1024, v2==42############ 9.匿名變數############標識符為_(底線)的變量,是系統保留的匿名變量,在賦值後,會立即釋放,稱為匿名變數。其作用是變數佔位符,對其變數賦值結構。通常會在批量賦值時使用。例如,函數傳回多個值,我們只需要其中部分,則不需要的使用_來佔位,示範:######
func main() { var ( v int ) // 调用函数,仅仅需要第二个返回值,第一,三使用匿名变量占位 _, v, _ = getData() } // 返回两个值的函数 func getData() (int, int, int) { // 返回3个值 return 42, 1024, 2012 }############10、變數作用域############Go語言中的變數是區塊作用域。區塊,指的是使用{}定義的程式碼段,包括函數,if/switch/for語句,或獨立的{}都是區塊。在區塊內定義的變數僅在本區塊內可用。定義,指的是 var 或 := 定義的變數。 Go語言的作用域是層疊的,是說內層塊可以直接存取到外層塊的變量,前提是內層塊沒有定義同名的外層變量。示範如下:######
// 全局(函数外)定义3个变量 var ( v1 = 1 v2 = 2 v3 = 3 ) func main() { // main{}函数块,定义2个变量 var ( v2 = 22 v3 = 33 ) fmt.Println(v1, v2, v3) // 结果 1 22 33 { // main()函数内部{}块,定义1个变量 var ( v3 = 333 ) fmt.Println(v1, v2, v3) // 结果 1 22 333 } }####
上面代码中: 在main()中,v2,v3被重新定义,则在main()中,v1是外部,而v2, v3是main函数局部的。 在main()内部的{}中,v3被重新定义,则在main()内部的{}中,v1是外部,而v2是main()定义的, v3是main()内部{}定义的的。
变量可以沿内部作用域向外部作用域查找变量的过程。
带有{}的语句,其中的变量也仅仅在内部有效,例如for,if,switch等,演示:
for i := 0; i < 10; i++ {
fmt.Println(i)
}
fmt.Println(i)
// 会提示变量i未定义, undefined: i
注意i,是通过短声明在for内部定义的变量,仅仅在for内部有意义。
互不嵌套的{}见作用域不可见,不可互相访问。
func main() {
{
v := 42
}
{
fmt.Println(v)
// 会提示变量v未定义, undefined: v
}
}
更多编程相关知识,请访问:编程教学!!
以上是Go語言中變數是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!