首页 > 后端开发 > Golang > 正文

Golangrune和byte的区别在哪

P粉602998670
发布: 2025-09-22 20:24:01
原创
388人浏览过
rune用于处理Unicode字符,byte用于ASCII或字节操作;中文等多字节字符用rune才能准确计数和遍历。

golangrune和byte的区别在哪

在Go语言中,runebyte 是两个常用于处理字符和字符串的类型,但它们的用途和底层表示有明显区别。理解它们的不同,对正确处理文本(尤其是中文等多字节字符)非常重要。

byte 是 uint8 的别名,表示一个字节

byte 实际上是 uint8 的别名,用来表示 8 位无符号整数,取值范围是 0 到 255。它通常用于处理 ASCII 字符或原始字节数据。

例如,英文字符 'A' 的 ASCII 码是 65,可以用 byte 表示:

  • 单个 byte 能表示一个 ASCII 字符
  • 在字符串遍历时,使用
    []byte(str)
    登录后复制
    或 range 得到的是每个字节
  • 对于非 ASCII 字符(如中文),一个字符可能占用多个字节

rune 是 int32 的别名,表示一个Unicode码点

runeint32 的别名,用来表示一个 Unicode 字符(即一个码点)。它可以正确表示包括中文、emoji 等在内的任何 Unicode 字符。

立即学习go语言免费学习笔记(深入)”;

稿定AI社区
稿定AI社区

在线AI创意灵感社区

稿定AI社区 60
查看详情 稿定AI社区

例如,汉字“你”的 Unicode 码点是 U+4F60,需要用 rune 才能准确表示。

  • rune 能完整表示任意 Unicode 字符
  • 字符串中的中文字符,在按 rune 遍历时会被当作一个单位
  • 使用
    []rune(str)
    登录后复制
    可以将字符串转为 Unicode 码点切片

实际使用中的关键差异

看一个例子更容易理解:

str := "你好, world!"
fmt.Println(len(str))           // 输出: 13 (字节数)
fmt.Println(len([]rune(str)))   // 输出: 9 (字符数,包含中文)
登录后复制
  • len(str)
    登录后复制
    返回字节数,因为字符串底层是字节序列
  • 中文“你”“好”各占 3 字节(UTF-8 编码),所以总字节数更多
  • []rune(str)
    登录后复制
    才能得到真正的“字符个数”
  • 遍历字符串时,若用 for range 直接遍历 str,得到的是字节索引;若转换为 []rune,则按字符遍历

基本上就这些。简单说:处理 ASCII 或二进制数据用 byte,处理国际化文本、中文、emoji 用 rune,避免乱码和长度误判。

以上就是Golangrune和byte的区别在哪的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号