變量
使用關鍵字var定義變量,格式爲:var 變量名 數據類型 = 值
對於未初始化的變量,編譯器會自動初始化。
go語言支持推斷賦值,即如果給變量提供初始化值,可以省略變量類型。由編譯器自行推斷
go語言支持組賦值
var name string = "wangyijie"
//組聲明,賦值
var (
name = "wangyijie"
i = 0
pi float64 = 3.1415926
a bool //默認true
b int //默認0
c *int //默認nil
d float64 //默認0.0
arr [3]int //默認[0 0 0]
value 變量類型 = 20
)
在函數體內生明變量還可以用 typeName := typeValue的格式,如果在函數體外使用會報出編譯錯誤:non-declaration statement outside function body,另外var 不可以和”:=”同時使用
//推斷賦值
func assgniment() {
//推斷賦值
name := "哀木梯"
fmt.Println(name)
}
此外,go可以並行定義多個變量
//並行聲明,前提是聲明的數據類型一致
var name, passwd, loginTime string
//同時也可以並行賦值,若聲明變量類型,並行的變量類型需要一致
var name, passwd, loginTime string = "wangyijie", "123456", "23246382637"
var age, gender = 12, "男" //也可不指定
//並行推斷聲明,賦值(應爲是編譯器自行推斷,變量類型可以不一致)
func demo() {
age desc := 20, "hello, world"
fmt.println(age, desc)
}
注:若聲明的局部變量爲使用,編譯階段會報錯,全局變量則沒有這個問題
//go語言中沒有一個名爲while的關鍵字,所以你可以聲明一個名爲while的變量
var while int
//如果局部變量未使用,會報出編譯時錯誤
func demo1() {
var time string //編譯報錯: time declared and not used
}
變量的作用域
var name string = "wangyijie"
func setName(){
var name string = "lizheng"
fmt.Println(name) //輸出lizheng
}
fmt.Println(name) //輸出wangyijie