go 语言字符类型 byte 与 rune

字节类型概述

golang 的字符有如下两种:

一种是 uint8 类型叫做 byte 型,代表了 ASCII 码的一个字符。

另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。

byte 类型

byte 类型是 uint8 的别名,可以表达只占用 1 个字节的传统 ASCII 编码的字符,例如 var ch byte = ‘B’,字符使用单引号括起来

用单引号括起来的单个字符是字符类型,用双引号括起来的字符是字符串类型

package main

func main() {
	var ch byte = 'a'
	println(ch)
	ch = 66
	println(ch)
	// 输出 97 66
}

rune 类型

golangn 同样支持 Unicode(UTF-8),因此字符同样称为Unicode代码点或者 runes,并在内存中使用int来表示。在文档中,一般使用格式 U+hhhh 来表示,其中 h 表示一个 16 进制数。

在书写 Unicode 字符时,需要在 16 进制数之前加上前缀\u或者\U。

因为 Unicode 至少占用 2 个字节,所以我们使用 int16 或者 int 类型来表示。

如果需要使用到 4 字节,则使用\u前缀,如果需要使用到 8 个字节,则使用\U前缀。

package main

func main() {
	var ch int = '\u0041'
	println(ch)
}