Space Researcher Asked:2024-02-22 15:36:20 +0800 CST2024-02-22 15:36:20 +0800 CST 2024-02-22 15:36:20 +0800 CST rune 和 byte 有什么区别? 772 为什么发明了两种不同的数据类型?它们的区别和用途是什么? golang 1 个回答 Voted Best Answer Pak Uula 2024-02-22T19:05:07+08:002024-02-22T19:05:07+08:00 rune是表示UTF- 32 又名 UCS-4 编码的 Unicode 字符的 32 位类型。 byte是通用8位类型。 rune用于处理字符串中的非 ASCII 字符。[]rune该类型有一个内置转换,可string将字符串从UTF-8(可变字节长度表示形式)解析为固定字节长度表示形式。 对于非 ASCII 字符串,[]byte(str)和之间的差异[]rune(str)是惊人的。线Привет, мир!: Байты: [208 159 209 128 208 184 208 178 208 181 209 130 44 32 208 188 208 184 209 128 33] Руны: [1055 1088 1080 1074 1077 1090 44 32 1084 1080 1088 33] 强制转换[]rune(string)相当于此函数: func ToRunes(bytes []byte) []rune { result := []rune{} for i := 0; i < len(bytes); { r, size := utf8.DecodeRune(bytes[i:]) result = append(result, r) i += size } return result } 程序文本Привет, мир!与符文之间的转换:https://go.dev/play/p/9CDY9Xm_NgV
rune
是表示UTF- 32 又名 UCS-4 编码的 Unicode 字符的 32 位类型。byte
是通用8位类型。rune
用于处理字符串中的非 ASCII 字符。[]rune
该类型有一个内置转换,可string
将字符串从UTF-8
(可变字节长度表示形式)解析为固定字节长度表示形式。对于非 ASCII 字符串,
[]byte(str)
和之间的差异[]rune(str)
是惊人的。线Привет, мир!
:强制转换
[]rune(string)
相当于此函数:程序文本
Привет, мир!
与符文之间的转换:https://go.dev/play/p/9CDY9Xm_NgV