1. 说明:
Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而 Go 的字符串不同,它是由字节组成的。
例子如下:
package main
import (
"fmt"
)
func main() {
var c1 byte = 'a'
var c2 byte = '0'
//直接输出:97 48 也就是字符的UTF-8码的值。
fmt.Println(c1,c2)
//格式化输出:c1=a , c2=0 这里%c表示按照字符输出
fmt.Printf("c1=%c , c2=%c ",c1,c2)
var c3 int = '中'
fmt.Printf("c3=%c ",c3)
//var c3 byte = '中'
//报错,因为字符‘中’的UTF-8的码值是20013,超出byte的范围(0-255)。
//fmt.Printf("c1=%c ",c3)
}
说明:
- 我们把一个字符(如:'a'、'0')赋值给byte。实际上是把字符对应的UTF-8的编码值赋值给byte类型变量。
- byte 是 uint8 的别名。直接输出之后,会输出字符对应的UTF-8编码值。想输出字符,要使用%c格式化输出。
- 如果用byte保存中文的字符,输出会报错。因为中文字符的UTF-8码值超出了byte能报存的范围。
- 可以使用int保存中文字符。
2. 字符的使用细节:
使用细节如下:
- 字符常量是用单引号('')括起来的单个字符。例如:var c1 byte = 'a' var c2 int = '中' var c3 byte ='9'。
- Go 中允许使用转义字符来将其后的字符转变为特殊字符型常量。例如:var c3 byte = '\n'。这里 '\n'表示换行符。
package main
import (
"fmt"
)
func main() {
var c3 byte = '\n'
//直接输出:10
fmt.Println(c3)
//输出:“前面”之后换行输出“后面”
fmt.Printf("前面%c后面",c3)
}
- Go 语 言 的 字 符 使 用 UTF-8 编 码 。 英文字母-1 个字节,汉字-3 个字节。如 果 想 查 询 字 符 对 应 的 utf8 码 值 http://www.mytju.com/classcode/tools/encode_utf8.asp
在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。
可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的 unicode 字符。
字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码。
package main
import (
"fmt"
)
func main() {
var c3 int = '中'+'a'
//输出'中'字符的UTF-8码值 加上'a'字符的码值
fmt.Println(c3)
}