新闻中心
如何在Golang中使用range遍历字符串
使用range遍历字符串可正确处理UTF-8编码的多字节字符,自动解析为rune。1. range返回字节索引和rune值,能准确输出每个Unicode字符及其位置;2. 可用下划线忽略索引,仅获取字符;3. 频繁操作时建议转为[]rune切片,使索引对应字符位置,便于修改和访问。

在Golang中使用range遍历字符串时,需要注意字符串底层是以字节(byte)形式存储的UTF-8编码。由于Go中的字符串是UTF-8编码的,一个字符可能占用多个字节,直接按字节遍历可能会导致乱码或错误拆分字符。使用range可以正确解码每个Unicode字符。
1. 使用 range 遍历字符串获取字符和索引
range遍历字符串时,会自动按UTF-8编码解析每一个Unicode码点(rune)。返回两个值:当前字符的起始字节索引和该字符对应的rune值。
str := "Hello 世界"
for index, char := range str {
fmt.Printf("索引: %d, 字符: %c, Unicode码: %U\n", index, char, char)
}
输出结果:
索引: 0, 字符: H, Unicode码: U+0048 索引: 1, 字符: e, Unicode码: U+0065 索引: 2, 字符: l, Unicode码: U+006C 索引: 3, 字符: l, Unicode码: U+006C 索引: 4, 字符: o, Unicode码: U+006F 索引: 5, 字符: , Unicode码: U+0020 索引: 6, 字符: 世, Unicode码: U+4E16 索引: 9, 字符: 界, Unicode码: U+754C
注意中文“世”从索引6开始,占3个字节,因此下一个字符“界”从索引9开始。
2. 只遍历字符,忽略索引
如果不需要索引,可以用下划线_忽略第一个返回值。
Musho
AI网页设计Figma插件
76
查看详情
for _, char := range "Go语言" {
fmt.Printf("字符: %c\n", char)
}
</font>
<p>输出:</p>
<font face="Courier New">
<pre class="brush:php;toolbar:false;">
字符: G
字符: o
字符: 语
字符: 言
3. 将字符串转为 rune 切片再遍历(适用于频繁操作单个字符)
如果需要多次访问或修改字符,建议先转换成[]rune切片,这样每个元素就是一个rune,索引也对应字符位置而非字节位置。
str := "Hello 世界"
runes := []rune(str)
for i, r := range runes {
fmt.Printf("位置: %d, 字符: %c\n", i, r)
}
输出中“世”的索引是6,“界”是7,与字节索引不同,更适合字符级别的处理。
基本上就这些。用range遍历字符串是最安全的方式,能正确处理多字节字符。若需字符级索引或修改内容,转为[]rune更直观。不复杂但容易忽略编码细节。
以上就是如何在Golang中使用range遍历字符串的详细内容,更多请关注其它相关文章!
# 多个
# 公司网站建设 宁波
# 抖音seo套餐
# 莱西网站建设模板
# 重庆建设网站培训班
# 历下区百度关键词排名怎么查
# 电商网站建设s
# seo与竞价排名的对比
# 肥东全网营销推广价格
# seo灰色实战
# 免费推广营销策划方案
# 可以用
# 不需要
# go
# 第一个
# 正确处理
# 移除
# 下划线
# 多字
# 如何在
# 遍历
# 字节
# 编码
# go语言
# golang
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】
曝R星经典之作开发图 设计简陋但信息密集!
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
excel如何生成目录 excel一键生成工作表目录超链接
AO3最新可访问网址 Archive of Our Own官方在线入口
Python实现多节点属性重叠度分析教程
在Go Martini框架中高效服务动态生成图像的实践指南
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
React Router 嵌套组件中 URL 重定向问题的解决方案
在React函数组件中利用原生HTML5进行邮箱地址验证
poki网页游戏推荐_poki免费游戏平台入口
J*aScript中在Map循环中检测并处理空数组元素
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
C++ map遍历方法大全_C++ map迭代器使用总结
微信语音通话掉线如何解决 微信语音通话稳定优化方法
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
Fabric模组开发:自定义物品与物品组的现代管理方法
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
css绝对定位元素脱离父容器怎么办_确保父元素position非static
React项目中导航栏Logo自适应布局:避免裁剪与布局溢出
Linux如何排查内存不足OOME问题_LinuxOOM分析教程
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
MongoDB聚合管道:正确匹配对象数组中_id的方法
Centos/Linux 系统下安装 composer 的完整步骤
微博网页版官方账号登录 微博网页版内容浏览使用指南
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法
在Socket.IO连接中实现Access Token自动更新与动态重连
小红书网页版入口链接分享 小红书官网直接进
Go RPC HTTP服务正确实现与常见陷阱解析
《刺客信条:影》PS5 Pro和Switch 2画面对比
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
网站内容防复制粘贴的实现策略与局限性
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
Node.js中HTML按钮与J*aScript函数交互的正确姿势
Golang指针如何与map组合使用_Golang map指针组合实践
解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
Django通过AJAX异步上传图片并保存至模型的完整指南
不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
jQuery Mask 插件中实现电话号码固定前导零的教程


2025-10-31
浏览次数:次
返回列表