golang 中的rune类型

前言

在学习golang的时候,对于中文字符串的切片让我感到困惑,如:

package main
import "fmt"
func main () {
    text:= "在学习golang的时候,对于中文字符串的切片让我感到困惑"
    fmt.Println(len(text))
}

>>> 75

由于之前的语言是python,对这样的用法很不习惯,在切分的时候,如果对中文切分不当,可能导致乱码。这时就发现了rune数据类型。

官方文档解释

// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.

//int32的别名,几乎在所有方面等同于int32
//它用来区分字符值和整数值

type rune = int32

*golang中的字符串底层实现是通过byte数组的
中文字符在unicode下占2个字节,在utf-8编码下占3个字节,golang默认编码是utf-8。

默认的byte 等同于int8,常用来处理ascii字符
而rune 等同于int32,常用来处理unicode或utf-8字符*

因为rune几乎等同于int32,所以通过rune类型转换处理,就能够正常处理含有中文的字符啦:

package main
import "fmt"
func main () {
    text:= "在学习golang的时候,对于中文字符串的切片让我感到困惑"
    cn_text := []rune(text)
    fmt.Println(len(cn_text))
}
>>> 29
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值