变量的来历
程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。
变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用。
变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变
变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil。
当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:
var 变量名 类型 = 表达式
举个例子:
var name string = “qinxi” var age int = 25
或者一次初始化多个变量
var name, age = “qinx”, 20
声明单一变量
声明变量的一般形式是使用 var 关键字:
var name type
其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型,行尾无需分号。
package mainimport "fmt"func main() {var age intfmt.Println("my age is", age)}
输出如下:
my age is 0
Go语言的基本类型有: bool string int、int8、int16、int32、int64 uint、uint8、uint16、uint32、uint64、uintptr byte // uint8 的别名 rune // int32 的别名 代表一个 Unicode 码 float32、float64 complex64、complex128
声明一个带初值的变量
在声明变量时可以指定其初始值。
声明一个带初值的变量的语法为:var name type = initialvalue,例如:
package mainimport "fmt"func main() {var age int = 25fmt.Println("my age is", age)}
输出如下:
my age is 25
类型推导
如果声明一个变量时提供了初始值,Go可以根据该初始值来自动推导变量的类型。因此如果声明变量时提供了初始值,就可以不必指定其类型。
也就是说,如果声明变量的形式为:var name = initialvalue,Go将根据 initialvalue 自动推导变量 name 的类型。
package mainimport "fmt"func main() {var age = 25fmt.Println("my age is", age)}
输出如下:
my age is 25
多变量声明
- 1、多个变量可以在一条语句中声明
多变量声明的语法为:var name1, name2 type = initialvalue1, initialvalue2,例如:
package mainimport "fmt"func main() {var age, height int = 25,160 //declaring multiple variables;fmt.Println("my age is", age, "\nmy height is",height)}
如果指定了初始值,则 可以利用类型推导将type 省略。
输出如下:
my age is 25my height is 160
- 2、一条语句中声明多个不同类型的变量
package mainimport "fmt"func main() {var(name = "qinxi"age = 26height int)fmt.Println("my age is", age, "\nmy height is",height,"\nmy name is",name)}
输出如下:
my age is 26my height is 0my name is qinxi
速记声明
速记声明使用 := 操作符来声明变量。
速记声明的语法为:name := initialvalue,例如:
package mainimport "fmt"func main() {name, age := "aike", 23 //name 字段必须双引号,否则无法识别 "undefined: aike"fmt.Println("his nanme is",name, "\nhis age is",age)}
输出如下:
his nanme is aikehis age is 23
速记声明要求必须给声明的每一个变量都提供初始值。
package mainimport "fmt"func main() {name, age := "aike" //age字段不给初始值,会报错“assignment mismatch: 2 variables but 1 values”fmt.Println("his nanme is",name, "\nhis age is",age)}
短变量声明
在函数内部,可以使用更简略的:=方式声明并初始化变量。
package mainimport ("fmt")// 全局变量mvar m = 100func main() {n := 10m := 200 // 此处声明局部变量mfmt.Println(m, n)}
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
- :=不能使用在函数外。
- _多用于占位,表示忽略值。
