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 个变量:
a
b
c
这些变量已声明,但尚未分配初始值。
通过运行代码,我们可以看到它们已经有了各自类型的默认值:
a
是""
b
是0
c
是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: 语法错误:非声明语句在函数体外部