golang 學(xué)習(xí)筆記 1.1 變量

變量

Go 是靜態(tài)類型語言,不能在運(yùn)行期改變變量類型。使用關(guān)鍵字 var 定義變量,自動(dòng)初始化為零值。如果提供初始化值,可省略變量類型,由編譯器自動(dòng)推斷。

var x int
var f float32 = 1.6
var s = "abc"

在函數(shù)內(nèi)部,可用更簡略的 ":=" 方式定義變量。

func main() {
    x := 123 // 注意檢查,是定義新局部變量,還是修改全局變量。該方式容易造成錯(cuò)誤。
}

可一次定義多個(gè)變量。

var x, y, z int
var s, n = "abc", 123

var (
    a int
    b float32
)

func main() {
    n, s := 0x1234, "Hello, World!"
    println(x, s, n)
}

多變量賦值時(shí),先計(jì)算所有相關(guān)值,然后再從左到右依次賦值。

data, i := [3]int{0, 1, 2}, 0
i, data[i] = 2, 100 // (i = 0) -> (i = 2), (data[0] = 100)
特殊只寫變量 "_",用于忽略值占位。
func test() (int, string) {
    return 1, "abc"
}

func main() {
    _, s := test()
    println(s)
}

編譯器會(huì)將未使用的局部變量當(dāng)做錯(cuò)誤。

var s string // 全局變量沒問題。

func main() {
    i := 0 // Error: i declared and not used。(可使用 "_ = i" 規(guī)避)
}

注意重新賦值與定義新同名變量的區(qū)別。

s := "abc"
println(&s)


s, y := "hello", 20 // 重新賦值: 與前 s 在同一層次的代碼塊中,且有新的變量被定義。
println(&s, y) // 通常函數(shù)多返回值 err 會(huì)被重復(fù)使用。

{
    s, z := 1000, 30 // 定義新同名變量: 不在同一層次代碼塊。
    println(&s, z)
}
// 輸出:
0x2210230f30
0x2210230f30 20
0x2210230f18 30
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容