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

概述

  1. rune 可以看作以 Unicode 码点为单位的 byte,区别在于:
    byte 是定长的,固定 8 个比特位,
    rune 是不定长的,根据 Unicode 码点需要的存储容量变长;
    一个 Unicode 码点 ==> 1 rune ==> 1~n byte
  2. 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!
    
  3. 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!
    
  4. rune 为什么是 int32 的别名,而不是 uint32 呢?

最后

以上就是结实楼房为你收集整理的rune 与 string 的区别和联系(笔记)的全部内容,希望文章能够帮你解决rune 与 string 的区别和联系(笔记)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部