我是靠谱客的博主 结实楼房,这篇文章主要介绍rune 与 string 的区别和联系(笔记),现在分享给大家,希望可以做个参考。

  1. rune 可以看作以 Unicode 码点为单位的 byte,区别在于:
    byte 是定长的,固定 8 个比特位,
    rune 是不定长的,根据 Unicode 码点需要的存储容量变长;
    一个 Unicode 码点 ==> 1 rune ==> 1~n byte
  2. len(str) 返回字符串的字节个数,是存储所占 byte 的数量,而不是 rune 数量
    复制代码
    1
    2
    3
    4
    5
    6
    str := "你好 Hello World!" for i := 0; i < len(str); i++ { fmt.Printf("%c", str[i]) } ä½ å¥½ Hello World!
    这段代码就是错误遍历字符串的典型,正确方式是使用 range,如下:
    复制代码
    1
    2
    3
    4
    5
    6
    str := "你好 Hello World!" for _, v := range str { fmt.Printf("%c", v) } 你好 Hello World!
  3. string 与 []rune 切片能够实现互转
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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!
  4. rune 为什么是 int32 的别名,而不是 uint32 呢?

最后

以上就是结实楼房最近收集整理的关于rune 与 string 的区别和联系(笔记)的全部内容,更多相关rune内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部