变量介绍
什么是变量
变量相当于内存中一个数据存储空间的表示,你可以把变量看作是一个房间的门牌号,通过门牌号我们可以找到房间。
同样的道理,通过变量名可以访问到变量(值)
变量使用的基本步骤
- 声明变量
- 赋值
- 使用
变量的快速入门
func main() {
//定义变量/声明变量
var i int
//给 i 赋值
i = 10
fmt.Println("i = ", i) //i = 10
}
变量使用注意事项
- 变量表示内存中的一个存储区域
- 该区域有自己的名称(变量名)和类型(数据类型)
示意图
golang变量有三种方式
<font style="color:#333333;">var</font>
声明语句可以创建一个特定类型的变量,然后给变量附加一个名字,并且设置变量的初始值。变量声明的一般语法如下:
其中 “类型”或“= 表达式” 两个部分可以省略其中的一个。
var 变量名字 类型 = 表达式
- 如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。
- 如果初始化表达式被省略,那么将用零值初始化该变量。 - 数值类型变量对应的零值是0 - 布尔类型变量对应的零值是false - 字符串类型对应的零值是空字符串 - 接口或引用类型(包括slice、指针、map、chan和函数)变量对应的零值是nil。 - 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值。
简短变量声明
它以“名字 := 表达式”形式声明变量,变量的类型根据表达式来自动推导因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化。
i := 100 // an int
var boiling float64 = 100 // a float64
var names []string
var err error
var p Point
<font style="color:#333333;">var</font>
形式的声明语句往往是用于需要显式指定变量类型的地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方。
和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:
i, j := 0, 1
指针
如果用“var x int”声明语句声明一个x变量,那么&x表达式(取x变量的内存地址)将产生一个指向该整数变量的指针,指针对应的数据类型是*int
,指针被称之为“指向int类型的指针”。
如果指针名字为p,那么可以说“p指针指向变量x”,或者说“p指针保存了x变量的内存地址”。
同时*p
表达式对应p指针指向的变量的值。一般*p
表达式读取指针指向的变量的值,这里为int类型的值,同时因为*p
对应一个变量,所以该表达式也可以出现在赋值语句的左边,表示更新指针所指向的变量的值。
x := 1
p := &x // p, of type *int, points to x
fmt.Println(*p) // "1"
*p = 2 // equivalent to x = 2
fmt.Println(x) // "2"
new函数
另一个创建变量的方法是调用内建的<font style="color:#333333;">new</font>
函数。表达式 <font style="color:#333333;">new(T) </font>
将创建一个<font style="color:#333333;">T</font>
类型的匿名变量,初始化为<font style="color:#333333;">T</font>
类型的零值,然后返回变量地址,返回的指针类型为*T
p := new(int) // p, *int 类型, 指向匿名的 int 变量
fmt.Println(*p) // "0"
*p = 2 // 设置 int 匿名变量的值为 2
fmt.Println(*p) // "2"