Golang:变量

作者: 与蟒唯舞 | 来源:发表于2017-11-27 14:54 被阅读51次
    声明一个变量

    语法:
    var name type

    package main
    
    import "fmt"
    
    func main() {  
        var age int // variable declaration
        fmt.Println("my age is", age)
    }
    

    语句 var age int 声明了一个名为 age 类型为 int 的变量。我们还没有为变量分配任何值。如果一个变量没有被赋值,golang 会自动用变量类型的零值初始化它。在这种情况下,age 被赋值为 0。

    声明一个变量并初始化

    语法:
    var name type = initialvalue

    package main
    
    import "fmt"
    
    func main() {  
        var age int = 29 // variable declaration with initial value
        fmt.Println("my age is", age)
    }
    
    类型推导

    语法:
    var name = initialvalue

    如果一个变量有初始值,golang 将自动使用该初始值来推断该变量的类型。因此,如果一个变量有初始值,变量声明中的类型可以省略。

    package main
    
    import "fmt"
    
    func main() {  
        var age = 29 // type will be inferred
        fmt.Println("my age is", age)
    }
    

    可以看到声明变量 age 时并没有指定其类型。因为 age 的初始值为 29,golang 自动推断其类型为 int

    多变量声明

    语法:
    var name1, name2 type = initialvalue1, initialvalue2

    package main
    
    import "fmt"
    
    func main() {  
        var width, height int = 100, 50 //declaring multiple variables
        fmt.Println("width is", width, "height is", height)
    }
    

    如果变量具有初始值,则类型可以省略。

    package main
    
    import "fmt"
    
    func main() {  
        var width, height = 100, 50 //"int" is dropped
        fmt.Println("width is", width, "height is", height)
    }
    

    可能有些情况下,我们想在一个语句中声明不同类型的变量。
    语法:

    var (  
          name1 = initialvalue1,
          name2 = initialvalue2
    )
    
    package main
    
    import "fmt"
    
    func main() {  
        var (
            name   = "naveen"
            age    = 29
            height int
        )
        fmt.Println("my name is", name, ", age is", age, "and height is", height)
    }
    

    这里我们声明了一个字符串类型的变量 name,以及两个整型的变量 ageheight

    简短声明

    golang 提供了一种简洁的方式,使用 := 操作符来声明变量。这种方式称为简短声明。注意:这种声明语法只能在函数内部使用。

    语法:
    name := initialvalue

    package main
    
    import "fmt"
    
    func main() {  
        name, age := "naveen", 29 //short hand declaration
        fmt.Println("my name is", name, "age is", age)
    }
    

    简短声明要求必须给声明的每一个变量都提供初始值。下面的程序将会报错:cannot assign 1 values to 2 variables。这是因为没有给 age 提供初始值。

    package main
    
    import "fmt"
    
    func main() {  
        name, age := "naveen" //error
        fmt.Println("my name is", name, "age is", age)
    }
    

    简短声明要求在 := 的左边必须至少有一个变量是新声明的。

    package main
    
    import "fmt"
    
    func main() {  
        a, b := 20, 30 // declare variables a and b
        fmt.Println("a is", a, "b is", b)
        b, c := 40, 50 // b is already declared but c is new
        fmt.Println("b is", b, "c is", c)
        b, c = 80, 90 // assign new values to already declared variables b and c
        fmt.Println("changed b is", b, "c is", c)
    }
    

    上面的程序中,在 b, c := 40, 50 这一行,虽然变量 b 在之前已经被声明了,但是 c 却是新声明的变量,因此这是合法的。

    变量可以被赋予运行时产生的值。

    package main
    
    import (  
        "fmt"
        "math"
    )
    
    func main() {  
        a, b := 145.8, 543.8
        c := math.Min(a, b)
        fmt.Println("minimum value is ", c)
    }
    

    相关文章

      网友评论

        本文标题:Golang:变量

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