002 Go 语言 变量

96
时光记忆forever
2018.06.22 01:04 字数 424

使用 var 定义变量

声明一个变量

package main

import (
    "fmt"
)

func main(){
    var x int
    fmt.Println("x: ",x)
}

# 运行结果
x:  0

var x int 声明一个int的变量 x。变量 x 没有被赋值,go会自动用变量类型的零值初始化它。运行结果为 x: 0

声明一个变量并初始化

var name type = initialvalue 是声明一个变量并初始化变量。

package main

import (
    "fmt"
)

func main(){
    
    var y int = 10
    fmt.Println("y: ",y)
}

# 运行结果
y:  10

类型推断

如果一个变量有一个初始值,变量声明中的类型可以省略。

如果使用语法 var name = initialvalue 声明变量,则Go将自动从初始值推断出该变量的类型。

package main

import (
    "fmt"
)

func main(){
    var z = 20
    fmt.Println("z: ",z)

}

# 运行结果
z:  20

声明多个变量

var name1,name2 type = initialvalue1,initialvalue2 是声明多个变量的语法。

package main

import (
    "fmt"
)

func main(){
    var m,n int = 10,20
    fmt.Printf("m: %d, n: %d\n",m,n)
}

# 运行结果
m: 10, n: 20
  • 变量都拥有初始值,可以省略数据类型

    package main
    
    import (
        "fmt"
    )
    
    func main(){
        var mm,nn  = 10,20
        fmt.Printf("mm: %d, nn: %d\n",mm,nn)
    }
    
    #运行结果
    mm: 10, nn: 20
    
  • 声明不同类型的变量

    package main
    
    import (
        "fmt"
    )
    
    func main(){
        var (
            name = "xiaoming"
            age = 18
            height int
        )
    
        fmt.Printf("name: %s, age: %d, height: %d\n",name,age,height)
    }
    
    # 运行结果
    name: xiaoming, age: 18, height: 0
    

短变量声明

在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。

name := initialvalue 是短变量声明的语法

package main

import (
    "fmt"
)

func main(){
    a,b := 100, "hello"
    fmt.Printf("a: %d, b: %s\n",a,b)
}

# 运行结果
a: 100, b: hello

如果我们运行下面的程序:

package main

import "fmt"

func main() {  
    a, b := 20, 30 //a and b declared
    fmt.Println("a is", a, "b is", b)
    a, b := 40, 50 //error, no new variables
}

no new variables on left side of := 这是因为变量a和b已经被声明,并且左侧没有新的变量

接下来运行下面程序:

package main

import (
    "fmt"
)

func main(){
    a,b := 100, "hello"
    b,c := "world", 200
    fmt.Printf("a: %d, b: %s, c: %d\n",a,b,c)
}

# 运行结果
a: 100, b: world, c: 200

这表示如果左侧有新的变量,我们就可以使用 := 声明变量并赋值。

关注公众号


关注公众号
Go 学习笔记