Go语言中的rune类型浅析
Posted goback20170622
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言中的rune类型浅析相关的知识,希望对你有一定的参考价值。
rune是Go语言中一种特殊的数据类型,它是int32的别名,几乎在所有方面等同于int32,用于区分字符值和整数值
1 package main 2 3 import "fmt" 4 5 func main() { 6 7 var str = "hello 世界" 8 fmt.Println("len(str):", len(str)) 9 10 }
这段代码的执行结果为:
len(str):12
从字符串字面值看len(str)的结果应该是8,但在Golang中string类型的底层是通过byte数组实现的,在unicode编码中,中文字符占两个字节,而在utf-8编码中,中文字符占三个字节而Golang的默认编码正是utf-8.
如果想要获得真实的字符串长度而不是其所占用字节数,有两种方法实现
方法一:
使用unicode/utf-8包中的RuneCountInString方法
str := "hello 世界"
fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))
方法二:
将字符串转换为rune类型的数组再计算长度
str := "hello 世界"
fmt.Println("rune:", len([]rune(str)))
以上是关于Go语言中的rune类型浅析的主要内容,如果未能解决你的问题,请参考以下文章