golang-101-hacks(7)——簡短變量聲明

注:本文是對golang-101-hacks中文翻譯。
在GO語言中簡短變量聲明是一種非常方便的“聲明變量”方式
short variable declaration is a very convenient manner of "declaring variable" in Go:

i := 10

以下是簡寫方式(注意變量沒有標(biāo)明類型):
It is shorthand of following (Please notice there is no type):

var i = 10

Go編譯器會根據(jù)變量的值來推斷變量的類型。這將帶來極大方便,但另一方面,也帶來了一些陷阱,應(yīng)該注意:
The Go compiler will infer the type according to the value of variable. It is a very handy feature, but on the other side of coin, it also brings some pitfalls which you should pay attention to:
(1)簡短變量聲明格式只能用于函數(shù)體內(nèi)
(1) This format can only be used in functions:

package main

i := 10

func main() {
    fmt.Println(i)
}

編譯體會提示如下錯誤

syntax error: non-declaration statement outside function body

(2)必須聲明至少一個新變量:

package main

import "fmt"

func main() {
    var i = 1

    i, err := 2, true

    fmt.Println(i, err)
}

i, err:= 2, false語句中,只有' err '是一個新聲明的變量,var實際上是在 vari = 1中聲明的。
簡短變量聲明可以隱藏全局變量聲明,它可能不是您想要的,這讓您大吃一驚:

package main

import "fmt"

var i = 1

func main() {

    i, err := 2, true

    fmt.Println(i, err)
}

' i, err:= 2, true '實際上聲明了一個new local i,這使得global i在' main '函數(shù)中沒有被訪問。使用全局變量,不使用局部變量,正確的解決方法如下:

package main

import "fmt"

var i int

func main() {

    var err bool

    i, err = 2, true

    fmt.Println(i, err)
}

參考:
Short variable declarations.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容