Golang - 变量、变量的数据类型
一、变量的概念
1.1 为什么需要变量
一个程序就是一个世界,世界中有千千万万的事物。在程序中,变量就可以用来表示事物。
变量是程序的基本组成单位。
1.2 变量的介绍
变量相当于内存中一个数据存储空间的表示。通过变量名可以访问到变量(对应的值)
1.3 变量使用的基本步骤
1). 声明变量(也可以叫定义变量)
基本语法:var 变量名 数据类型
var a int
声明了一个int类型的变量,变量名是a
2). 赋值
先声明,后给值。
var num int; num=777
3). 使用
1.4 初始化变量
在声明变量的时候,就给值。
var a = 50
此时,编译器会使用类型推导
相当于把声明和赋值,合并成一步完成了。
二、变量使用的注意事项
2.1 变量表示内存中的一个存储区域
该区域的数据值可以在同一类型范围内不断变化。不是同一个数据类型就会报错!
2.2 该区域有自己的名称(变量名)和类型(数据类型)
2.3 Golang变量使用的三种方式
- 指定变量类型,声明后若不赋值,使用其对应类型的零值
- 根据值自行判定变量的类型(类型推导)
- 短变量声明方式,也就是海象运算符
:=
注意::=
左侧的变量不应该是已经声明过的,否则编译器会报错!
2.4 多变量声明
一次性声明多个变量
package main
import "fmt"
func main() {
//一次性声明多个变量
var n1, n2, n3 int
fmt.Printf("n1=%v\tn2=%v\tn3=%v", n1, n2, n3)
//n1=0 n2=0 n3=0
fmt.Println()
//不能再重复定义n1,n2,n3
var n11, n22, n33 = 100.11, "tome", 888
//或者可以写成下面等价的短变量声明
//n11, n22, n33 := 100.11, "tome", 888
fmt.Printf("n11=%v\tn22=%v\tn33=%v", n11, n22, n33)
//n11=100.11 n22=tome n33=888
}
下例演示一次性声明多个全局变量:
package main
import "fmt"
//一次性声明多个全局变量
var (
name = "barry"
age = 30
height = 161.8
)
func main() {
fmt.Printf("name=%v\tage=%v\theight=%v", name, age, height)
//name=barry age=30 height=161.8
}
2.5 变量在一个作用域内不能重名
在同一级作用域内不能重复定义
2.6 变量包含三个部分
变量名、值、数据类型
2.7 变量没有赋值,编译器则会使用该数据类型的零值
- 数值类型:0(整数、浮点数,都是0)
- 字符串类型:""(一个空字符串)
- 指针类型:nil(为空)
三、变量的数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。
3.1 基本数据类型
官方对基本数据类型的涵盖介绍:
3.1.1 数值型
1.整数类型
用于存放一个整数
- byte:1个字节
- int8:8位的整数类型,相当于byte,一个字节
- int16:2个字节
2.浮点类型
- float32 4个字节,单精度
- float64 8个字节,双精度
3.1.2 字符型
golang没有专门的char类型,使用byte来存储单个字母符号(注意是单个英文字母),要存储汉字至少需要int32
在golang中,采用UTF-8的编码格式,一个汉字占3个字节,一个byte存不进去
3.1.3 布尔型
- true
- false
3.1.4 字符串
3.1.5 rune
int32的别名,字符串中有中文时会用这个数据类型进行保存,它采用Unicode