1.类型介绍
在Go
语言中,有基本数据类型(原生数据类型)和复合数据类型(派生数据类型)。
2.值类型
2.1 整型
整型分两大类:
有符号整型:
int8、int16、int32(别名:rune)、int64、int。
无符号整型:
uint8(别名:byte)、uint16、uint32、uint64、uint。
整型取值范围:
2.2 浮点数
浮点型表示存储的数据是实数,浮点类型分: float32
和float64
两种,默认是float64
类型 | 字节 | 说明 |
---|---|---|
float32 |
4 | 32位的浮点型 |
float64 |
8 | 64位的浮点型 |
声明使用:
|
- 常量
math.MaxFloat32
表示float32能获取的最大值,大约是3.4×1038; - 常量
math.SmallestNonzeroFloat32
表示float32能获取的最小值,大约为1.4×10-45。 - 常量
math.MaxFloat64
表示float64能获取的最大值,大约是1.8×10308; - 常量
math.SmallestNonzeroFloat64
表示float64能获取的最小值,大约为4.9×10-324。
2.3 布尔类型
布尔值的类型为bool,值是true或false,默认为false
2.4 字符串
字符串都是采用UTF-8字符集编码。字符串是用一对双引号(””)或反引号(` `)括起来定义,字符串不可变,可以用 + 操作符 连接两个字符串
声明使用:
|
2.5 字符
字符串中的每一个元素叫作“字符”,定义字符时使用单引号。Go语言的字符有两种,如下表:
类型 | 字节 | 说明 |
---|---|---|
byte | 1 | 表示UTF8 字符串中的单个字节的值,别名:unit8 |
rune | 4 | 表示单个unicode 字符,别名:int32 |
声明使用:
|
2.6 数组(array)
|
声明使用:
|
如果在
数组的长度
位置出现的是“…”省略号,则表示数组的长度是根据初始化值的 个数来计算
2.7 结构体(struct)
结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。
|
结构体的初始化可以使用
new
关键词和var
关键词,不同的是如果使用new
,则返回类型是一个指针,使用var
,则是结构体自身。
3. 引用类型
3.1 切片(slice)
创建slice主要两种:1.基于数组创建。2.直接创建
1.基于数组创建
|
数组arrVar和sliceVar里面的地址其实是一样的,也就是说如果你改变sliceVar里面的变量,那么arrVar里面的变量也会随之改变。
2.直接创建
|
可以使用内置的make()函数来创建。事实上还是会创建一个匿名的数组,只是不需要我们来定义。
3.2 映射(map)
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
/* 声明变量,默认 map 是 nil */
var myMap map[keyType]valueType
//示例1
ages := map[string] int {
"tom": 21,
"anny": 18,
}
/* 使用 make 函数 */
myMap := make(map[keyType]valueType)
//示例1相当于
ages := make(map[string]int)
ages["tom"] = 21
ages["anny"] = 18
myMap是声明的变量名,keyType是对应的Key的类型,valueType是value的类型。
4.常量
程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go语言程序中,常量可定义为数值、布尔值或字符串等类型。常量定义后未被使用,不会在编译时报错。
常量中的数据类型只可以是布尔型、数字型(整型、浮点型和复数型)和字符串。
语法:
|
|
4.1 iota 枚举
Go语言里面有一个关键字iota,这个关键字用来声明enum的时候采用,它默认开始值是0,每调用一次加1。,每个const分组的第一个常量被默认设置为它的0值,第二及后续的常量被默认设置为它前面那个常量的值,如果前面那个常量的值是iota,则它也被设置为iota。
|
每遇到一个const关键字,iota就会重置
5. 复数型
默认类型是complex128
(64位实数+64位虚数)。如果需要小一些的,也有complex64
(32位实数+32位虚数)。复数的形式为RE+IMi
,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。
声明使用:
|