- rune 可以看作以 Unicode 码点为单位的
byte,区别在于:
byte是定长的,固定 8 个比特位,
rune是不定长的,根据 Unicode 码点需要的存储容量变长;
一个 Unicode 码点 ==> 1rune==> 1~nbyte len(str)返回字符串的字节个数,是存储所占byte的数量,而不是rune数量
这段代码就是错误遍历字符串的典型,正确方式是使用str := "你好 Hello World!" for i := 0; i < len(str); i++ { fmt.Printf("%c", str[i]) } ä½ å¥½ Hello World!range,如下:str := "你好 Hello World!" for _, v := range str { fmt.Printf("%c", v) } 你好 Hello World!- string 与 []rune 切片能够实现互转
str := "你好 Hello World!" runes := []rune(str) // string 转 []rune for i := 0; i < len(runes); i++ { fmt.Printf("%c", runes[i]) } fmt.Println() str2 := string(runes) // []rune 转 string fmt.Println(str2) 你好 Hello World! 你好 Hello World! - rune 为什么是 int32 的别名,而不是 uint32 呢?
rune 与 string 的区别和联系(笔记)
最新推荐文章于 2025-09-15 11:07:31 发布
本文深入探讨了Go语言中rune与byte的区别,解释了rune为何以Unicode码点为单位,且长度可变,而byte则固定为8位。通过代码示例展示了如何正确遍历包含多字节字符的字符串,并介绍了string与[]rune类型之间的转换方法。
7945

被折叠的 条评论
为什么被折叠?



