byte本指是int8,操作的基本单位是字节,适合只适合表达ascii字符
rune本质是int32,操作的基本单位是字符,可以处理所有的字符,用来表示utf8,unicode等编码
string本指是[]byte
byte/rune转string
var b []byte="abc"
var r []rune="cdr"
var s1 string=string(b)
var s2 string =string(r)
string转byte/rune
var s string = "abc"
r := []rune(s)
b:=[]byte(s)
len()函数
var b []byte="abc"
var r []rune="cdr你好"
s := string(r)
fmt.Println(len(r))
fmt.Println(len(b))
//在unicode中,一个中文占两个字节,utf-8中一个中文占三个字节,golang默认的编码是utf-8编码,因此默认一个中文占三个字节,但是golang中的字符串底层实际上是一个byte数组。因此输出9
fmt.Println(len(s))
string的遍历
var r []rune="cdr你好"
s := string(r)
// 输出不正常
for i:=0;i<len(s);i++ {
fmt.Println(string(s[i]))
}
//按字符输出 "cdr你好"
for _,v:= range s {
fmt.Println(string(v))
}
有疑问加站长微信联系(非本文作者)