go语言 – 简洁声明

Go还提供了另一种声明变量的简洁方法。这就是所谓的简洁声明,使用:=操作符。语法如下:

name:= initialvalue

示例

package main

import "fmt"

func main() {  
    name, age := "naveen", 29 // 简洁声明

    fmt.Println("my name is", name, "age is", age)
}

输出:

my name is naveen age is 29

简洁声明要求全部变量必须有初始值。下面的程序将抛出一个错误,不能把一个值分配给两个变量。这是因为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 // 声明变量a和b
    fmt.Println("a is", a, "b is", b)
    b, c := 40, 50 // b已经声明了,但是c是新的
    fmt.Println("b is", b, "c is", c)
    b, c = 80, 90 // 为已经声明的变量b和c分配新值
    fmt.Println("changed b is", b, "c is", c)
}

输出:

a is 20 b is 30  
b is 40 c is 50  
changed b is 80 c is 90  

但是如果我们运行下面的程序,

package main

import "fmt"

func main() {  
    a, b := 20, 30 // a和b已经声明
    fmt.Println("a is", a, "b is", b)
    a, b := 40, 50 //error, 没有新的变量
} 

这是因为变量a和b都已经声明了,在:=的左边没有新变量。

还可以为在运行时计算的变量赋值。考虑下面的程序,

package main

import (  
    "fmt"
    "math"
)

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

在上面的程序中,c的值是在运行时计算的,是a和b的最小值。上面的程序会打印出:

minimum value is  145.8 

因为Go是强类型的,所以一种类型的变量不能赋值给另一种类型。

下面的程序将抛出一个错误:cannot use "naveen" (type string) as type int in assignment,因为age声明为类型int,我们试图把一个字符串值赋给它。

package main

func main() {  
    age := 29      // age 是 int 类型
    age = "naveen" // 错误,因为我们试图将字符串分配给int类型的变量
}


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载