官方解释
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.
rune为int32的别名,等同于int32,使用它是为了区分整数值和字符值
例子
想获取hi 杨洋
字符串的长度,采用下面代码,发现打印出9
package main
import "fmt"
func main() {
var str = "hi 杨洋"
fmt.Println("len(str):", len(str)) // 9
}
为什么不是5
呢?下面是官方解释
golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。
使用rune获取字符串长度
package main
import (
"fmt"
)
func main() {
var str = "hi 杨洋"
fmt.Println("rune:", len([]rune(str))) // 5
}
结论
rune 等同于int32,常用来处理unicode或utf-8字符