基本数据类型
GO
语言中的数据类型十分丰富,包含:整型、浮点型、布尔型,还有数组、切片、结构体、函数、map
、通道chanel
等
整型
-
无符号整型
- uint8:$0——2^8-1$,0到255
- uint16:$0——2^16-1$,0到65535
- uint32
- uint64
-
有符号整型
- int8:-128到127
- int16:-32768到32767
- int32
- int64
-
其他数字类型
- uint:32/64位系统上就是uint32/uint64
- int:32/64位系统上就是int32/int64
- uintptr:无符号整型,用于存放一个指针
注意:
- 在使用
int
和uint
类型时,不能假定它是32位或64位的整型,而是考虑int
和uint
可能在不同平台上的差异。 - 获取对象的长度的内建
len()
函数返回的长度可以根据不同平台的字节长度进行变化。实际使用中,切片或 map 的元素数量等都可以用int
来表示。在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int
和uint
。
浮点型
两种浮点类型:float32
和float64
,需要导入包math
。
-
float32
的浮点数的最大范围约为3.4e38
,可以使用常量定义:math.MaxFloat32
-
float64
的浮点数的最大范围约为1.8e308
,可以使用一个常量定义:math.MaxFloat64
1 | package main |
复数
有complex64
(实部和虚部都是32
位)和complex128
(实部和虚部都是64
位)两种
1 | var c1 complex64 |
布尔值
-
只有
False
和True
,默认是Fasle
-
Go
语言中不允许将数值类型强制转成布尔型 -
布尔类型不参与运算,无法和其他类型进行转换
字符串
-
Go
语言中以原生数据类型出现 -
使用的的是
utf-8
编码,默认是支持中文的 -
字符串为双引号("")里面的内容
-
可以在
Go
语言的源码中直接添加非ASCII
码字符1
2
3s1 := "hello beijing"
s2 := "你好,北京"
fmt.Println(s1, s2)转义字符
转义字符
转义字符 | 作用 |
---|---|
— | — |
\r | 回车符,回到行首 |
\n | 换行符 |
\t | 制表符 |
\‘ | 单引号 |
" | 双引号 |
\\ | 反斜杠 |
1 | //转义字符:打印路径 |
多行字符串
通过反引号来实现,类似于Python
中的r''
,里面的内容是原样输出,不进行任何转义
1 | //多行字符串输出:里面的内容是原样输出,不进行任何转义 |
字符串操作
- 求长度
- 拼接
- 分割
- 是否包含
- 前后缀判断
- 子串出现的位置
jion
操作
1 | package main |
byte和rune类型
组成每个字符串的元素叫做“字符”,通过遍历的方式获取字符串中单个字符。字符用单引号
括起来
1 | var a := "zhong" |
Go
语言的字符有两种:
uint8
类型,或者叫做byte
类型,代表ASCII
码的一个字符,处理默认字符串类型,不能处理中日韩等文字rune
类型,代表的是utf-8
字符,实际上是一个int32
,用来处理Unicode类型
1 | package main |
byte
类型不能处理中文,出现乱码rune
处理中日韩等文字,根据字符来遍历
修改字符串
要修改字符串需要先将其转成[]rune
或者[]byte
类型,完成后再转成string
。转换会重新分配内存,并且赋值字节数组。字符串--->[]rune/[]byte--->string
1 | package main |
Go语言中只有强制类型转换,没有隐式类型转换