Go 变量
变量是用来存储数据值的容器。
Go 变量类型
在 Go 中,有不同类型的变量,例如
int
- 存储整数(整数值),如 123 或 -123float32
- 存储浮点数,带有小数部分,如 19.99 或 -19.99string
- 存储文本,如 "Hello World"。字符串值用双引号括起来bool
- 存储具有两种状态的值:true 或 false
关于不同变量类型的更多信息,将在 Go 数据类型 章中介绍。
声明(创建)变量
在 Go 中,有两种方法可以声明变量
1. 使用 var
关键字
使用 var
关键字,后跟变量名和类型
语法
var 变量名 类型 = 值
注意:你必须始终指定 类型
或 值
(或两者)。
2. 使用 :=
符号
使用 :=
符号,后跟变量值
语法
变量名 := 值
注意: 在这种情况下,变量的类型将从值中推断出来(意味着编译器根据值决定变量的类型)。
注意: 无法使用 :=
声明变量,而不为其赋值。
带初始值的变量声明
如果变量的值从一开始就知道,你可以在一行代码中声明变量并为其赋值
示例
package main
import ("fmt")
func main() {
var student1 string = "John" // 类型为字符串
var student2 = "Jane" // 类型被推断出来
x := 2 // 类型被推断出来
fmt.Println(student1)
fmt.Println(student2)
fmt.Println(x)
}
自己试试 »
注意: student2
和 x
的变量类型是从它们的值中推断出来的。
不带初始值的变量声明
在 Go 中,所有变量都被初始化。因此,如果在声明变量时没有提供初始值,则其值将被设置为其类型的默认值
示例
package main
import ("fmt")
func main() {
var a string
var b int
var c bool
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
自己试试 »
示例解释
在这个示例中,有 3 个变量
a
b
c
这些变量已声明,但尚未分配初始值。
通过运行代码,我们可以看到它们已经具有各自类型的默认值
a
是""
b
是0
c
是false
声明后赋值
在声明变量后,可以为其赋值。这对于在初始时不知道变量值的情况很有用。
示例
package main
import ("fmt")
func main() {
var student1 string
student1 = "John"
fmt.Println(student1)
}
自己试试 »
注意: 无法使用 ":=
" 声明变量,而不为其赋值。
var 和 := 的区别
在 var
和 :=
之间有一些细微的差异
var | := |
---|---|
可以在 函数内部 和 函数外部 使用 | 只能在 函数内部 使用 |
变量声明和赋值 可以分开进行 | 变量声明和赋值 不能分开进行(必须在同一行代码中进行) |
示例
此示例展示了使用 var
关键字在函数外部声明变量
package main
import ("fmt")
var a int
var b int = 2
var c = 3
func main() {
a = 1
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
自己试试 »
示例
由于在函数外部使用了 :=
,因此运行程序会导致错误。
package main
import ("fmt")
a := 1
func main() {
fmt.Println(a)
}
结果
./prog.go:5:1: syntax error: non-declaration statement outside function body