变量是为存储特定类型的值的内存位置指定的名称。在 go 中声明变量有各种语法。
声明一个变量
比如声明一个 name 的变量
1
2
3
4
5
6
7
8
|
package main
import fmt
func main() {
var name int
fmt.Println("My age is", name)
}
|
该语句 var age int
声明了一个变量类型为 int 的变量。我们没有为变量分配任何值。一般情况下没有为变量赋值,那么改变量的初始值默认为0。运行上面程序会输出如下结果。
当然实际应用中也可以给变量赋其他类型的值,就上面的例子而言, 我们可以给变量 name 赋予任何整数值
1
2
3
4
5
6
7
8
9
10
11
12
|
package main
import "fmt"
func main() {
var age int // variable declaration
fmt.Println("my age is ", age)
age = 29 //assignment
fmt.Println("my age is", age)
age = 54 //assignment
fmt.Println("my new age is", age)
}
|
声明具有初始值的变量
变量在声明的时候也可以赋予初始值,基本语法是 var name type = initialvalue
1
2
3
4
5
6
7
8
9
|
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
1
2
3
4
5
6
7
8
9
|
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
。
1
2
3
4
5
6
7
8
9
|
package main
import fmt
func main() {
var width,height = 100, 200, //declaring multiple variables, "int" is dropped
fmt.Println("Width is", width, "Height is", height)
}
|
在某些情况下,我们可能希望在单个语句中声明属于不同类型的变量。基本语法如下
1
2
3
4
|
var (
name1 = initialvalue1,
name2 = initialvalue2
)
|
再看看下面的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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)
// output my name is naveen, age is 29 and height is 0
}
|
简短的声明
Go还提供了另一种简洁的方式来声明变量。这称为简写声明,它使用 := 运算符。基本语法是 name:= initialvalue
1
2
3
4
5
6
7
8
9
|
package main
import "fmt"
func main() {
name, age := "naveen", 29 //short hand declaration
fmt.Println("my name is", name, "age is", age)
}
|
由于 Go 是强类型的,因此声明属于一种类型的变量不能分配另一种类型的值。以下程序将抛出一个错误,cannot use "naveen" (type string) as type int in assignment
因为 age 被声明为 int 类型,不能赋予其他类型的值。
1
2
3
4
5
6
|
package main
func main() {
age := 10
age = "Bob" //error since we are trying to assign a string to a variable of type int
}
|