go利用rune获取中文字符串长度

byte 等同于int8,常用来处理ascii字符
rune 等同于int32,常用来处理unicode或utf-8字符
golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。

package main

import (
   "fmt"
   "unicode/utf8"
)

func main() {
   var str = "你好 world"

   //golang中string底层是通过byte数组实现的,直接求len 实际是在按字节长度计算  所以一个汉字占3个字节算了3个长度
   fmt.Println("len(str):", len(str))  //结果是12

   //以下两种都可以得到str的字符串长度,而不是字节数
   //golang中的unicode/utf8包提供了用utf-8获取长度的方法
   fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))   //结果是8
   //通过rune类型处理unicode字符
   fmt.Println("rune:", len([]rune(str)))   //结果是8
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值