Go 变量
变量是存储数据值的容器。
Go 变量类型
在 Go 中,存在不同类型的变量,例如:
int- 存储整数(整数值),如 123 或 -123float32- 存储带有小数的浮点数,如 19.99 或 -19.99string- 存储文本,如 "Hello World"。字符串值被双引号包围bool- 存储两个状态的值:true 或 false
关于不同的变量类型,将在 Go 数据类型 一章中为您解释。
声明(创建)变量
在 Go 中,有两种声明变量的方法:
1. 使用 var 关键字:
使用 var 关键字,后跟变量名称和类型:
语法
var variablename type = value
注意:您必须始终指定类型或值(或两者都指定)。
2. 使用 := 符号:
使用 := 符号,后跟变量值:
语法
variablename := value
注意:在这种情况下,变量的类型从值中推断出来(这意味着编译器基于值来决定变量的类型)。
注意:不可能只使用 := 声明变量而不为其分配值。
带有初始值的变量声明
如果从一开始就知道变量的值,您可以在一行中声明变量并为其分配值:
实例
package main
import ("fmt")
func main() {
var student1 string = "Bill" // 类型是字符串
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 个变量:
abc
这些变量已声明,但尚未分配初始值。
通过运行代码,我们可以看到它们已经有了各自类型的默认值:
a是""b是0c是false
声明后赋值
可以在声明变量后为其分配值。这对于初始值未知的情况很有帮助。
实例
package main
import ("fmt")
func main() {
var student1 string
student1 = "Bill"
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: 语法错误:非声明语句在函数体外部