Go語言如何聲明變量

1. 用關鍵詞var進行聲明

var name type = expression

var後面跟着變量名name,變量類型type和變量初始值expression。Go語言帶有零值機制,能夠自動對沒有顯式賦值的變量進行零值初始化。Go語言裏不存在未經初始化的變量。

var s string
fmt.Println(s) // ""

我們也可以同時聲明多個變量。

var i, j, k int                    // int, int, int
var b, f, s = true, 2.3, "four"    // bool, float64, string

省略類型並同時對多個變量進行顯式初始化,Go會自動從初始值的類型推斷變量的類型。

函數的返回值也可以用來初始化變量。

var f, err = os.Open(name) // os.Open returns a file and an error

2. 簡短變量聲明

簡短變量聲明用於聲明大部分的局部變量。簡短變量聲明可以用這樣的表達式表示。

name := expression

具體的例子如下:

anim := gif.GIF{LoopCount: nframes}
freq := rand.Float64() * 3.0
t := 0.0

函數返回值也可以用在簡短聲明中。

f, err := os.Open(name)
if err != nil {
    return err
}
f.Close()

在多變量的簡短聲明中至少需要有一個變量是沒有聲明過的,這意味着Go允許多個變量中存在已經聲明過的變量。

3. new 內置函數

new(T)表達式可以創建一個類型爲T的無名變量,進行零值初始化後返回變量的地址,即類型*T。

p := new(int)          // p, 類型 *int
fmt.Println(*p)        // 輸出"0"
*p = 2                 // 賦值爲2
fmt.Println(*p)        // 輸出“2”

new作爲內置函數,可以在局部被相同名字的變量覆蓋。

func delta(old, new int) int {return new - old}

上面函數內部new是int類型變量,內置函數new無法使用,這在語法上是合法的。

new函數用於初始化出現頻率不高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章