Go变量教程展示了如何在Golang中使用变量。
$ go version go version go1.18.1 linux/amd64
我们使用Go版本1.18。
Go中的变量
变量用于存储值。它们是赋予值的标签。使用var关键字来声明变量列表。我们还可以使用:=简写语法来声明变量。
变量可以保存不同数据类型的值。数据类型是一组值和对这些值的允许操作。在许多情况下,Go可以从赋值的右侧推断出数据类型。
变量存储的值会随时间变化。另一方面,常量一旦定义就不会改变它们的值。
去声明变量
变量的类型跟在变量名后面。
package main
import "fmt"
func main() {
var i int = 1
var w float64 = 12.5
fmt.Println(i, w)
}
在代码示例中,我们声明并初始化了两个变量。稍后,我们打印它们。
$ go run declaring.go 1 12.5
去声明多个变量
使用var关键字,我们可以一次声明多个变量。
package main
import (
"fmt"
)
func main() {
var i, j, k = 1, 2, 3
var (
name = "John Doe"
occupation = "gardener"
)
fmt.Println(i, j, k)
fmt.Printf("%s is a %s\n", name, occupation)
}
该示例显示了如何使用var声明多个变量。
$ go run var_init.go 1 2 3 John Doe is a gardener
Go类型推断
Go可以从赋值的右边推断出数据类型。
package main
import (
"fmt"
"reflect"
)
func main() {
var name = "John Doe"
var age = 34
fmt.Println(reflect.TypeOf(name))
fmt.Println(reflect.TypeOf(age))
fmt.Printf("%s is %d years old\n", name, age)
}
在代码示例中,我们定义了两个变量,但没有指定它们的数据类型。推断数据类型。
var name = "John Doe" var age = 34
为了使推理起作用,变量必须被初始化。
fmt.Println(reflect.TypeOf(name)) fmt.Println(reflect.TypeOf(age))
借助reflect包中的TypeOf函数,我们打印两个变量的数据类型。
$ go run inference.go string int John Doe is 34 years old
Go速记变量声明
在函数内部,:=短赋值语句可以用来代替带有隐式类型的var声明。
package main
import "fmt"
func main() {
name := "John Doe"
age := 34
fmt.Printf("%s is %d years old\n", name, age)
}
该示例使用简写符号声明了两个变量。
Go速记多变量声明
我们也可以使用简写符号定义多个变量。
package main
import "fmt"
func main() {
name, age := "John Doe", 34
fmt.Printf("%s is %d years old\n", name, age)
}
程序在一行中用简写符号声明了两个变量。
Go变量默认值
没有显式初始值声明的变量被赋予它们的零值:
- 0-数字类型
- false-布尔类型
- “”-字符串类型
package main
import "fmt"
func main() {
var age int
var isPresent bool
var name string
var weight float64
fmt.Println(age, isPresent, name, weight)
}
代码示例中的四个变量被赋予了它们的默认值。
Go变量作用域
变量的范围是可以引用变量的代码区域。
package main
import "fmt"
var word string = "falcon"
func main() {
i := 12
fmt.Println(word)
fmt.Println(i)
test()
}
func test() {
fmt.Println(word)
}
在代码示例中,我们定义了两个变量。
var word string = "falcon"
word变量是在全局范围内定义的。它在main和test函数中都可见。
func main() {
i := 12
...
i变量有局部作用域。它仅在main函数内可见。
持续不断
与变量不同,常量不能随时间改变它们的值。它们是用const关键字定义的。常量按照惯例以大写字母书写。
package main
import "fmt"
func main() {
var age int = 34
const WIDTH = 100
age = 35
age = 36
// WIDTH = 101
fmt.Println(age, WIDTH)
}
在代码示例中,我们使用age变量和WIDTH常量。
在本教程中,我们介绍了Golang中的变量。
列出所有Go教程。
