美文网首页
golang-101-hacks(7)——简短变量声明

golang-101-hacks(7)——简短变量声明

作者: _羊羽_ | 来源:发表于2019-05-27 22:27 被阅读0次

    注:本文是对golang-101-hacks中文翻译。
    在GO语言中简短变量声明是一种非常方便的“声明变量”方式
    short variable declaration is a very convenient manner of "declaring variable" in Go:

    i := 10
    
    

    以下是简写方式(注意变量没有标明类型):
    It is shorthand of following (Please notice there is no type):

    var i = 10
    
    

    Go编译器会根据变量的值来推断变量的类型。这将带来极大方便,但另一方面,也带来了一些陷阱,应该注意:
    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)简短变量声明格式只能用于函数体内
    (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 '函数中没有被访问。使用全局变量,不使用局部变量,正确的解决方法如下:

    package main
    
    import "fmt"
    
    var i int
    
    func main() {
    
        var err bool
    
        i, err = 2, true
    
        fmt.Println(i, err)
    }
    
    

    参考:
    Short variable declarations.

    相关文章

      网友评论

          本文标题:golang-101-hacks(7)——简短变量声明

          本文链接:https://www.haomeiwen.com/subject/mmshtctx.html