全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何用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序列。

安全做法是转换为 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 处理。


# go  # golang  # 编码  # 字节  # String  # if  # 封装  # 字符串  # int  # Length  # 切片  # len  # ASCII  # 你好  # 多字  # 的是  # 第一个  # 但对  # 转换为  # 但因  # 或非  # 正确理解  # 以避免 


相关文章: 建站之星2.7模板:企业网站建设与h5定制设计专题  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  昆明高端网站制作公司,昆明公租房申请网上登录入口?  黑客如何利用漏洞与弱口令入侵网站服务器?  小程序网站制作需要准备什么资料,如何制作小程序?  Python如何创建带属性的XML节点  ,南京靠谱的征婚网站?  如何快速查询网址的建站时间与历史轨迹?  如何打造高效商业网站?建站目的决定转化率  定制建站是什么?如何实现个性化需求?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站之星后台管理:高效配置与模板优化提升用户体验  佛山企业网站制作公司有哪些,沟通100网上服务官网?  制作网站公司那家好,网络公司是做什么的?  山东网站制作公司有哪些,山东大源集团官网?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  学校为何禁止电信移动建设网站?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何用西部建站助手快速创建专业网站?  C++如何使用std::optional?(处理可选值)  seo网站制作优化,网站SEO优化步骤有哪些?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站之星如何助力网站排名飙升?揭秘高效技巧  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  制作网站的基本流程,设计网站的软件是什么?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何在建站之星网店版论坛获取技术支持?  公司门户网站制作流程,华为官网怎么做?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何通过.red域名打造高辨识度品牌网站?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  c# 在ASP.NET Core中管理和取消后台任务  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站之星如何实现PC+手机+微信网站五合一建站?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  c# 在高并发下使用反射发射(Reflection.Emit)的性能  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何正确选择百度移动适配建站域名?  如何在服务器上配置二级域名建站?  如何确保西部建站助手FTP传输的安全性?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  ,怎么用自己头像做动态表情包?  常州企业网站制作公司,全国继续教育网怎么登录? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。