golang 中的rune类型 | 您所在的位置:网站首页 › byte转码 › 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 |
CopyRight 2018-2019 实验室设备网 版权所有 |