当前位置:  首页>> 技术小册>> GO面试指南

在 Go 中,rune 和 byte 都是基本数据类型。byte 类型表示单个字节的数据,而 rune 类型表示单个 Unicode 字符。

具体来说,byte 类型是 uint8 的别名,范围为 0~255,用于表示 ASCII 码中的字符和二进制数据。而 rune 类型是 int32 的别名,范围为 0~0x10FFFF,用于表示 Unicode 字符。在 Go 中,使用 rune 类型可以方便地处理各种语言的字符,而不仅仅是 ASCII 码。

下面是一个简单的示例:

  1. func main() {
  2. str := "Hello, 世界"
  3. for i := 0; i < len(str); i++ {
  4. fmt.Printf("%c %d\n", str[i], str[i])
  5. }
  6. for _, r := range str {
  7. fmt.Printf("%c %d\n", r, r)
  8. }
  9. }

在上面的示例中,我们定义了一个字符串 str,其中包含了英文字符和中文字符。然后,我们使用两个循环分别遍历字符串中的字节和字符,并输出它们的值和对应的 Unicode 码点。

在第一个循环中,我们使用 len 函数获取字符串的字节数,并使用下标访问字符串中的每个字节。然后,使用 %c 和 %d 格式化字符串将字节和对应的整数值输出。

在第二个循环中,我们使用 range 关键字遍历字符串中的每个字符,将其赋值给变量 r。然后,使用 %c 和 %d 格式化字符串将字符和对应的 Unicode 码点输出。

可以看到,在第一个循环中,中文字符会被拆分成三个字节输出,而在第二个循环中,每个字符都被正确地输出了其对应的 Unicode 码点。这说明使用 rune 类型可以方便地处理 Unicode 字符,而不需要手动处理多个字节。


该分类下的相关小册推荐: