Go語言學習筆記-變量

變量
使用關鍵字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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章