字符类型
2022-02-04 大约 1 分钟
golang中没有专门的字符类型,如果要储存单个字符(字母),一般使用byte来保存。golang中字符使用utf-8编码。
# byte类型
package main
import "fmt"
func main() {
// 定义字符类型的数据
var c1 byte = 'a'
fmt.Println(c1) // 97
var c2 byte = '6'
fmt.Println(c2) // 54
var c3 byte = '('
fmt.Println(c3) // 40
fmt.Println(c3 + 20) // 60
var c4 byte = '中'
fmt.Println(c4) // 报错
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
看到上面的输出你可能会产生疑惑,为什么不是a
而是数字97
呢?这是因为在golang中字母,数字,标点等字符,底层是按照ASCII(一共规定了128个字符的编码)进行储存的。a
对应的就是数字97
。
::: into
- 字符类型本质上就是一个整数,也可以直接参与运算,输出字符的时候会将对应的码值做一个输出。
- 汉字字符,底层对应的是unicode编码,示例
中
对应的码值为20013
。而byte
表示的范围是0~255。所以就溢出了。可以使用int
类型。 - 如果想显示对应的字符可以使用
fmt.Printf
。
:::
golang的字符对应使用的是UTF-8编码(unicode是对应的字符集,UTF-8是Unicode的其中一种编码方案),ASCII码可以理解成Unicode的前128位。
# 转义字符
将后面的字母表示为特殊的含义
转义符 | 含义 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\ " | 双引号 | \u0022 |
\ ' | 单引号 | \u0027 |
\ \ | 反斜杠 | \u005c |