Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。
一、基本数据类型
1、整型
整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64
其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。
类型 | 描述 |
---|---|
int8 | 有符号 8位整型 (-128 到 127) |
int16 | 有符号 16位整型 (-32768 到 32767) |
int32 | 有符号 32位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64位整型 (-9223372036854775808 到 9223372036854775807) |
uint8 | 无符号 8位整型 (0 到 255) |
uint16 | 无符号 16位整型 (0 到 65535) |
uint32 | 无符号 32位整型 (0 到 4294967295) |
uint64 | 无符号 64位整型 (0 到 18446744073709551615) |
特殊的整型
类型 | 描述 |
---|---|
int | 32位操作系统上就是int32,64位操作系统上就是int64 |
uint | 32位操作系统上就是uint32,64位操作系统上就是uint64 |
2、浮点型
- float32 的浮点数的最大范围约为
3.4e38
,可以使用常量定义:math.MaxFloat32
。 - float64 的浮点数的最大范围约为
1.8e308
,可以使用一个常量定义:math.MaxFloat64
。
3、布尔型bool
bool布尔型数据只有true(真)和false(假)两个值。
注意:
- 布尔类型变量的默认值为false
- Go 语言中不允许将整型强制转换为布尔型
- 布尔型无法参与数值运算,也无法与其他类型进行转换
4、字符串类型string
Go语言中的字符串以原生数据类型出现,使用utf-8编码
字符串的定义可以使用双引号""
,也可以用反引号``
s1 := "hello world"
s2 := `hello
world`
字符串转义符
转义符 | 含义 |
---|---|
\r |
回车符(返回行首) |
\n |
换行符(直接跳到下一行的同列位置) |
\t |
制表符 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
单引号'
和双引号"
var a = '中'
var b = "中"
fmt.Printf("%T, %v, %c\n", a, a, a) \\int32, 20013, 中
fmt.Printf("%T, %v\n", b, b) \\string, 中
5、byte和rune类型
Go 语言的字符有以下两种:
- uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
- rune类型,代表一个 UTF-8字符。
当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。
// 遍历字符串
s := "hello世界"
for i := 0; i < len(s); i++ {
fmt.Printf("%v[%c] ", s[i], s[i])
}
for _, v := range s {
fmt.Printf("%v[%c]", v, v)
}
输出:
104[h] 101[e] 108[l] 108[l] 111[o] 228[ä] 184[¸] 150[] 231[ç] 149[] 140[]
104[h]101[e]108[l]108[l]111[o]19990[世]30028[界]
6、类型转换Type Convert
语法格式:Type(Value)
常数:在有需要的时候,会自动转型
变量:需要手动转型T(V)
注意点:兼容类型才可以转换
二、复合类型
1、指针类型(pointer)
2、数组类型(array)
3、结构体类型(strutct)
4、函数类型(function)
5、切片类型(slice)
6、接口类型(interface)
7、Map类型(map)
8、管道类型(channel)
网友评论