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

解释Golang的rune类型和byte类型有什么不同

P粉602998670
发布: 2025-09-03 09:42:02
原创
865人浏览过
rune是字符,byte是字节。Go中byte为uint8别名,用于处理ASCII和二进制数据;rune为int32别名,表示Unicode码点,用于正确处理中文、emoji等多字节字符。字符串以UTF-8存储,一个字符可能占多个字节。如"你好"占6字节但仅2字符。用len(str)得字节数,len([]rune(str))得字符数。文件操作用byte,文本处理用rune。

解释golang的rune类型和byte类型有什么不同

在Go语言中,runebyte都是用于表示数据的基本类型,但它们的用途和底层含义有明显区别,主要体现在对字符和字符串的处理方式上。

byte 类型:表示一个字节

byteuint8 的别名,表示一个 8 位无符号整数,取值范围是 0 到 255。它通常用来处理原始的二进制数据或 ASCII 字符。

在字符串中,byte 对应的是字符串的每一个字节。由于 Go 中的字符串是以 UTF-8 编码存储的,一个字符可能占用多个字节,尤其是非 ASCII 字符(如中文、emoji)。

示例:

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

字符串 "hello" 有 5 个字符,每个字符是 ASCII,所以可以用 5 个 byte 表示。
字符串 "你好" 是 UTF-8 编码,每个汉字占 3 个字节,总共 6 个字节,但只有 2 个字符。

rune 类型:表示一个 Unicode 码点

runeint32 的别名,表示一个 Unicode 码点(code point),即一个完整的字符。它能正确处理包括中文、日文、emoji 等在内的所有 Unicode 字符。

居然设计家
居然设计家

居然之家和阿里巴巴共同打造的家居家装AI设计平台

居然设计家 199
查看详情 居然设计家

当你需要遍历字符串中的“字符”而不是“字节”时,应该使用 rune。使用 range 遍历字符串时,Go 会自动将 UTF-8 编码的字节序列解码为 rune。

常见操作对比:

  • []byte(str) 可以把字符串转为字节切片,按字节访问
  • []rune(str) 可以把字符串转为 rune 切片,按字符访问

例子:

str := "你好, world!"
len(str) → 返回 13(字节数)
len([]rune(str)) → 返回 9(字符数)

使用建议

当你处理的是:

  • 文件读写、网络传输、二进制协议 → 用 byte
  • 文本处理、字符串遍历、国际化字符 → 用 rune

基本上就这些。简单说:byte 是字节,rune 是字符,特别是在 UTF-8 环境下,区分它们很重要。

以上就是解释Golang的rune类型和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号