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教程。