新闻中心
如何用Golang实现字符串长度与切片_Golang 字符串长度切片实践
答案:Go中字符串切片和长度需区分字节与字符,len()返回字节数,utf8.RuneCountInString()返回字符数,中文处理应转为[]rune操作以避免乱码。

在Golang中,字符串的长度和切片操作看似简单,但因Go内部对UTF-8编码的支持,处理中文或非ASCII字符时容易出错。正确理解字符串底层结构是关键。
字符串长度:len() 与 utf8.RuneCountInString()
使用 len() 函数获取的是字符串的字节数,不是字符数。对于ASCII字符,两者一致;但对于中文等UTF-8多字节字符,结果不同。
例如:str := "你好, world"
fmt.Println(len(str)) // 输出 13(字节数)
要获取真实字符数(即Unicode码点数量),应使用 utf8.RuneCountInString():
fmt.Println(utf8.RuneCountInString(str)) // 输出 8(字符数)
字符串切片:按字节还是按字符?
Go的字符串切片基于字节索引,直接用 [start:end] 可能会切断多字节字符,导致乱码。
例如 str[0:2] 在 "你好" 中可能只取第一个汉字的一半,产生非法UTF-8序列。
美图云修
商业级AI影像处理工具
50
查看详情
安全做法是转换
为 rune 切片:
- 将字符串转为 []rune 类型,每个元素对应一个Unicode字符
- 对 []rune 进行切片操作
- 再转回字符串
示例代码:
runes := []rune("你好, world")
result := string(runes[0:2]) // 正确截取前两个字符:"你好"
实用函数封装
可封装常用操作,避免重复出错:
func substring(s string, start, length int) string {
runes := []rune(s)
if start >= len(runes) {
return ""
}
end := start + length
if end > len(runes) {
end = len(runes)
}
return string(runes[start:end])
}
调用 substring("你好, world", 0, 2) 返回 "你好",安全且符合预期。
基本上就这些。关键是区分字节和字符,涉及中文或国际化文本时,始终用 []rune 处理。
以上就是如何用Golang实现字符串长度与切片_Golang 字符串长度切片实践的详细内容,更多请关注其它相关文章!
# 相关文章
# 北京推广营销方式
# 伊春搜索引擎关键词排名
# 济南厨房装饰网站建设
# 多久可以工作seo
# seo文章多可以写多少
# 惠州谷歌seo策略
# 青岛网站建设方案详细版
# 海南网站建设优势
# 宁波排名前十seo公司
# 清远网站建设品牌
# 正则表达式
# 中文网
# 字符串
# 第一个
# 的是
# 如何用
# 转换为
# 多字
# 美图
# 你好
# 字节
# 编码
# golang
# go
# 切片
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
PHP 枚举:根据字符串获取枚举案例的策略与实现
如何将一个大型PHP应用拆分为多个Composer包_微服务与模块化架构的Composer实践
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
京东单号查询入口_京东快递订单追踪入口
实现分段式页面滚动导航:CSS与J*aScript教程
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
我的世界官方游戏入口 我的世界官网平台直达链接
如何将HTML表格多行数据保存到Google Sheets
AO3最新入口2025公告_AO3中文官网合集
Python多版本共存与虚拟环境管理深度指南
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】
Golang如何实现容器化日志收集与分析_Golang容器日志收集分析方法
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
TikTok网页版直接登录 TikTok网页端官方平台入口
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
解决深度学习模型训练初期异常高损失与完美验证准确率问题
解决移动端滚动问题的overflow属性应用指南
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】
Python Socket多播通信中指定源IP地址的实践指南
Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧
绝地鸭卫平a核爆刀流玩法攻略
如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口
如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题
Android Studio计算器C键功能异常排查与修复教程
WordPress插件开发:正确注册卸载钩子与避免常见陷阱
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达
Django表单提交验证失败后保持字段值不刷新
Steam官网入口直达 Steam注册及登录步骤
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
mc.js官网登录入口 mc.js官方登录入口最新版
AO3最新官网入口公告_2025AO3镜像站实时查询方法
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
Golang如何测试channel通信行为_Golang channel通信测试与分析方法
构建轻量级网站内部消息系统:Formspree 集成指南
jQuery Mask 插件中实现电话号码固定前导零的教程


2025-11-25
浏览次数:次
返回列表