Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解


rune是字符,byte是字节。Go中byte为uint8别名,用于ASCII字符或二进制数据;rune为int32别名,表示Unicode码点,处理中文、emoji等多字节字符需用rune,字符串遍历和字符计数应基于rune避免乱码。

golang中的rune与byte类型区别是什么_golang字符与字节处理详解

在Go语言中,runebyte 是处理字符与字节时最常遇到的两种类型,它们虽然都用于表示数据单元,但用途和底层含义完全不同。理解它们的区别对正确处理字符串、中文字符和其他多字节文本至关重要。

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

byte 在Go中其实是 uint8 类型的别名,用来表示一个8位的无符号整数,取值范围是 0 到 255。它通常用于处理原始的二进制数据或ASCII字符。

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

  • var b byte = 'A' // 值为 65
  • 字符串底层由字节组成,但仅当字符串是ASCII时,每个 byte 才对应一个字符

对于只包含ASCII字符的字符串,使用 len(str) 返回的字节数等于字符数。但一旦涉及非ASCII字符(如中文),情况就不同了。

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

rune 是 Go 中 int32 的别名,用来表示一个Unicode字符(即一个码点)。它可以表示包括中文、 emoji、拉丁扩展字符在内的所有Unicode字符。

Unicode编码支持多字节字符,比如:

Viggle AI Video Viggle AI Video

Powerful AI-powered animation tool and image-to-video AI generator.

Viggle AI Video 115 查看详情 Viggle AI Video
  • '你' 是一个中文字符,对应 Unicode 码点 U+4F60,占用3个字节(UTF-8编码下)
  • 用 rune 可以准确表示这个字符本身,而不是它的某个字节

Go中的字符串默认以UTF-8格式存储,因此一个字符可能由多个字节组成。使用 []rune(str) 可以将字符串正确拆分为字符序列。

实际使用中的关键区别

看一个例子来理解差异:

str := "Hello, 世界"
fmt.Println("字节数:", len(str))           // 输出: 13("世"和"界"各占3字节)
fmt.Println("字符数:", len([]rune(str)))   // 输出: 8(H,e,l,l,o,,, ,世,界)

for i, b := range []byte(str) {
    fmt.Printf("%d: %d\n", i, b)  // 遍历每一个字节
}
for i, r := range str {
    fmt.Printf("%d: %c\n", i, r)  // 遍历每一个字符(rune)
}
  • range 字符串时,每次迭代返回的是 rune 而不是 byte
  • 要获取真实字符数量,应使用 utf8.RuneCountInString(str) 或转换为 []rune
  • 直接索引字符串(str[i])得到的是 byte,可能截断多字节字符

何时使用 byte,何时使用 rune?

选择依据是你要处理的是字节流还是字符逻辑

  • 处理文件I/O、网络传输、图片数据等原始二进制时,用 byte
  • 处理用户输入、文本显示、字符串截取、统计字符长度时,优先用 rune
  • 需要操作单个Unicode字符时,用 rune 切片:[]rune(str)

比如实现一个截取前N个字符的函数,必须基于 rune:

func substr(s string, n int) string {
    runes := []rune(s)
    if n >= len(runes) {
        return s
    }
    return string(runes[:n])
}

基本上就这些。掌握 byte 和 rune 的本质区别,能避免在处理中文、emoji或多语言文本时出现乱码或截断错误。核心记住:byte 是字节,rune 是字符。

以上就是Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解的详细内容,更多请关注其它相关文章!


# 是一个  # 华为公司网站建设目标  # 乌海网站优化商城在哪  # 桥头公司网站建设哪家好  # 五寨网站建设机构  # 广州网站优化价格  # 晋中关键词排名稳定提升  # google 熊猫4.0 网站优化  # 逆冬白帽seo  # 神马网站推广多少钱一年  # 东营seo招商代理  # 多个  # 二进制数  # go  # 而不是  # 器中  # 遍历  # 的是  # 多字  # AI-powered  # 区别  # 多语言  # 字节  # 编码  # go语言  # golang 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: byrutor直接访问入口 byrutor官方游戏库  PHP utf8_encode 字符编码转换陷阱与解决方案  风车动漫官网首页入口登录 风车动漫在线观看正版地址  C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  荣耀magicv5怎么上手测评  Eclipse开发J*a快速入门  cad怎么隐藏指定的图层_cad隐藏或冻结图层方法  支付宝登录刷脸不是本人如何解决  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  《万兴喵影》导出视频方法  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  《kimi智能助手》制作ppt教程  《雷电模拟器》自动点击设置方法  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  《edge浏览器》关闭翻译功能方法  《tt语音》超级玩家开通方法  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】  猫眼电影app怎么查询电影院的营业时间_猫眼电影影院营业时间查询教程  Apple Music无故扣费引质疑  Linux如何开发轻量级数据服务模块_Linux服务化设计  自定义你的VS Code状态栏,监控关键信息  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  《下一站江湖2》武器获取方法  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧  CSS如何在页面中引入重置样式_使用Normalize.css或Reset.css统一浏览器默认样式  mysql如何回滚事务_mysql ROLLBACK事务回滚方法  《洛克王国:世界》国家队搭配攻略  VS Code的时间线(Timeline)视图:您的代码时光机  我的世界官方网址入口 我的世界游戏主页直达入口  在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  rabbitmq 持久化有什么缺点?  OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  Dash应用中自定义HTML页面标题与网站图标(F*icon)的实用指南  《磁力猫》最好用的磁官网  Linux如何优化系统启动流程_Linux启动项优化方案  163邮箱登录入口官网 163.com邮箱登录入口  《新三国志曹操传》游历事件袁尚突围攻略  TikTok视频播放中断怎么办 TikTok播放异常修复方法  三角洲行动2025年9月10日摩斯密码分享  《偃武》甘宁技能详解  如何在vscode中关闭it环境  一点万象签到领积分指南  PHP utf8_encode 字符编码转换疑难解析与最佳实践  作业帮网页版不用下载入口 在线问老师快速答疑  mysql离线安装后如何启动_mysql离线安装完成后启动服务的方法 

 2025-11-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.