1. 变量
1.1 什么是变量
所谓的变量简单的理解就是计算机用来存储数据的,我们可以理解变量就像我们去超市购买商品时用的购物车,来存放物品。计算机通过变量来保存我们所定义的变量的值保存到计算机中(使用十六进制无符号的格式进行保存)
1.2 变量类型
我们现在理解了变量可以用来存储数据,但是我们要存储的数据类型是各种各样的,例如:整数、小数、文本等等。所以我们必须在定义时就要告诉计算机,定义的变量存储的是什么类型的数据。那么在内存中就可以根据不同的类型来开辟不同的内存空间。
Go语言引入关键字var,而类型信息放在变量名之后,实例如下:
package main
import "fmt"
func main() {
fmt.Println("测试变量定义")
// 1. 声明格式:var 变量名 类型,变量声明了,就必须使用,否则会报错
// 2. 声明类型变量,该变量默认值为0,(只是声明变量没有赋值,默认值就是0)
// 3. 同一个方法中,变量必须是唯一的
var a int
fmt.Println("a:", a)
}
1.3 变量初始化
- 现在我们已经完成变量的定义了,但是该变量中存储的值,并不是我们想要的,我们希望变量中存储的是我们想要的值,应该怎样操作。
- 我们可以在定义变量时,就给变量赋值,这种方式就是变量的初始化,实例如下:
package main
import "fmt"
func main() {
fmt.Println("测试变量初始化赋值")
var b int = 10 // 定义b变量并赋值为10的值
fmt.Println("b:", b)
}
1.4 变量赋值
除了定义变量时,完成初始化以外,我们也可以在变量定义完成后,在给变量赋值,也就是先声明后赋值,如下:
func main() {
fmt.Println("测试先声明变量后赋值")
var b, c int // 先声明变量b、c在对其变量进行赋值
b = 10
c = 20
fmt.Println("b", b)
fmt.Println("c", c)
}
注意: 上面的输出语句也可以用一个print函数,具体如下:
fmt.Print(a,b) // 注意中间需要使用逗号分割
1.5 自动推导类型
在给变量赋值时,我们感觉非常麻烦,有没有更简单的给变量赋值的方式,我们可以使用自动推导类型,实例如下:
func main() {
fmt.Println("测试自动推导类型")
num := 30 // 系统会自动检测后面赋值的类型
fmt.Println("num:", num)
}
1.6 多重赋值
在上面的例子当中,我们采用了自动推导的方式,如果想一次性自动推导的方式给多个变量进行赋值,应该怎样实现呢,如下:
func main() {
fmt.Println("测试自动推导类型给多个变量")
b, c, d := 1, 2, 3
fmt.Println(b, c, d)
}
1.7 接收输入
前面我们所写的所有的程序,都是直接给变量赋值,但是很多情况下,我们希望用户通过键盘输入一个数值,存储到某个变量中,然后将变量的值取出来,进行操作。例如场景:(在银行ATM机取钱时,要输入密码),实例如下:
func main() {
var age int
fmt.Println("测试键盘输入")
fmt.Println("请输入你的年龄")
fmt.Scanf("%d", &age)
fmt.Printf("age=%d", age)
}
在go中我们用到fmt这个包中的Scanf函数来接受用户键盘输入的数据,当程序执行到Scanf()函数后,会停止往下执行。
会等待用户的输入,输入完成后程序继续往下执行,在这里重点注意的是Scanf() 函数的书写格式,要用"%d",来表示输入的一个整数,输入完后存储到变量age中,注意这里的age变量前面一定要加"&"符号,表示获取内存中的地址,然后才能够存储(因为键盘输入的值直接保存到计算机内存中的),所以我们需要用&符号取变量在计算机中的地址来进行输出