本文为译文。原文地址:Variables
声明一个单变量
**var name type**是声明一个单变量的语法。
package main
import "fmt"
func main() {
var age int // variable declaration
fmt.Println("My age is", age)
}
这里var agr int声明了一个叫做名为age,类型为int的变量。我们没有分配任何值给这个变量。如果变量没有被分配任何值,go会自动根据变量的类型初始化一个**zero value**如果你运行该程序,则会得到以下输出。
My age is 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)
}
类型推导
如果一个变量有一个初始值,go会自动使用其初始值推导出其变量类型。因此,如果变量有一个初始值,那么其类型可以被省略。
var name = initialvalue
package main
import "fmt"
func main() {
var age = 29 // type will be inferred
fmt.Println("My age is", age)
}
多变量声明
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)
}
如果你没有对变量进行初始化操作,go也会自动进行赋zero value
package main
import "fmt"
func main() {
var width, height int
//width is 0 height is 0
fmt.Println("width is", width, "height is", height)
width = 100
height = 50
//new width is 100 new height is 50
fmt.Println("new width is", width, "new 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)
}
快捷声明
go提供了一种简洁的办法做变量声明。语法**name := initialvalue**
下面的代码声明了变量count赋值为10.go会自动的进行类型推导为int.
package main
import "fmt"
func main() {
count := 10
fmt.Println("Count =",count)
}
同时我们也可以声明过个值
name, age := "naveen", 29 //short hand declaration
快速声明需要对所有的变量都必须进行初始化。下面的程序将会打印一个错误assignment mismatch: 2 variables but 1 values 这是因为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)
}
下面的程序就会报错了//error, no new variables
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
}
变量也可以被分配一个运行时计算出来的值。
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就是在运行时才被赋的值。