在Go中,有不同的变量类型,例如:
int
存储整数(整数),例如123或-123float32
存储浮点数字,带小数,例如19.99或-19.99string
- 存储文本,例如“ Hello World”。字符串值用双引号括起来bool
存储具有两个状态的值:true或false在Go中,有两种声明变量的方法:
var
关键字:使用var
关键字,后跟变量名称和类型:
语法
var variablename type = value
注意:您始终必须指定type
或value
(或两者)。
:=
符号使用:=
符号,后跟变量值:
语法
variablename := value
注意:在这种情况下,变量的类型是从值中推断的(这意味着编译器根据值决定变量的类型)。
注意:无法使用:=
声明变量,而不将值分配给它。
如果从一开始就知道变量的值,则可以在一行中声明变量并为其赋值:
示例
package main import ("fmt") func main() { var student1 string = "John" //type is string var student2 = "Jane" //type is inferred x := 2 //type is inferred 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
关键字声明变量:
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
在Go中,可以在同一行中声明多个变量。
示例
此示例显示如何在同一行中声明多个变量:
package main import ("fmt") func main() { var a, b, c, d int = 1, 3, 5, 7 fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) }
注意: 如果使用type
关键字,则每行只能声明一个类型的变量。
如果未指定type
关键字,则可以在同一行中声明不同类型的变量:
示例
package main import ("fmt") func main() { var a, b = 6, "Hello" c, d := 7, "World!" fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) }
多个变量声明也可以组合到块中以增加可读性:
示例
package main import ("fmt") func main() { var ( a int b int = 1 c string = "hello" ) fmt.Println(a) fmt.Println(b) fmt.Println(c) }
变量可以有简短的名称(如x和y)或更描述性的名称(age,price,carname等)。
Go变量命名规则:
a-z,A-Z
,0-9
和_
)具有多个单词的变量名称可能难以阅读。
有几种技术可用于使它们更易于阅读:
每个单词,除了第一个单词以外,都以大写字母开头:
myVariableName = "John"
每个单词以大写字母开头:
MyVariableName = "John"
每个单词之间用下划线字符分隔:
my_variable_name = "John"