Go語言基礎語法----變量
1變量
1.1什麼是變量
變量是爲存儲特定類型的值而提供給內存位置的名稱。在go中聲明變量有多種語法。
變量的本質就是一小塊內存,用於存儲數據,在程序運行過程中數值可以改變
1.2聲明變量
變量名稱:以字母或下劃線開頭,由一個或多個字母、數字、下劃線組成
指定變量類型,聲明後若不賦值,使用默認值
var name string
name = "baby"
根據值自行判定變量類型(類型推斷Type inference)
一個變量有一個初始值,Go將自動能夠使用初始值來推斷該變量的類型。因此,如果變量具有初始值,則可以省略變量聲明中的類型。
var age = 18
- 省略var, 注意 :=左側的變量不應該是已經聲明過的(多個變量同時聲明時,至少保證一個是新變量),否則會導致編譯錯誤(簡短聲明)
- 這種方式它只能被用在函數體內,而不可以用於全局變量的聲明與賦值
phoneNumber := 888888888
示例:
package main
import "fmt"
func main() {
//指定變量類型,聲明後若不賦值,使用默認值
var name string
fmt.Println(name)
name = "baby"
fmt.Println(name)
//根據值自行判定變量類型(類型推斷Type inference)
var age = 18
fmt.Println(age)
//省略var, 注意 :=左側的變量不應該是已經聲明過的(多個變量同時聲明時,至少保證一個是新變量),否則會導致編譯錯誤(簡短聲明)
phoneNumber := 888888888
fmt.Println(phoneNumber)
}
運行結果:
baby
18
888888888
1.3 多變量聲明
第一種,以逗號分隔,聲明與賦值分開,若不賦值,存在默認值
var name1, name2, name3 type
name1, name2, name3 = v1, v2, v3
第二種,直接賦值,下面的變量類型可以是不同的類型
var name1, name2, name3 = v1, v2, v3
第三種,集合類型
var (
name1 type1
name2 type2
)
1.4 注意事項
- 變量必須先定義才能使用
- go語言是靜態語言,要求變量的類型和賦值的類型必須一致。
- 變量名不能衝突。(同一個作用於域內不能衝突)
- 簡短定義方式,左邊的變量名至少有一個是新的
- 簡短定義方式,不能定義全局變量。
- 變量的零值。也叫默認值。
- 變量定義了就要使用,否則無法通過編譯。
在同一個作用域中,已存在同名的變量,則之後的聲明初始化,則退化爲賦值操作。但這個前提是,最少要有一個新的變量被定義,且在同一作用域,例:
package main
import (
"fmt"
)
func main() {
var name string
name = "haha"
//&符號的意思是對變量取地址
fmt.Println(&name, name)
name, age := "xixi", 18
fmt.Println(&name, name)
fmt.Println(&age, age)
}
運行結果:
0x11088108 haha
0x11088108 xixi
0x1109e068 18