rune是int32(-2147483648~2147483647)的别名,可以表示比byte(-128~127)更多的字符。由于符文可以表示的范围更大,所以它可以处理所有的字符,当然也包括汉字。平时计算汉字,可以用符文。当我们的数据中有中文的时候,一定要注意符文的处理。len()详解len()获取字节数,一个中文占3个字节bytesfmt.Println(len(s))fmt.Println(len(sHello))fmt.Println(len(sHello))输出结果为:853循环输出字符串s:="HelloKing"fori:=0;我<长度;i++{fmt.Printf("%c\n",s[i])}输出结果:我们发现可以正常输出英文,但是这样输出中文会乱码循环输出中文字符串我们可以使用forrange循环从字符串中取出特定字符s:="HelloKing"for_,c:=ranges{fmt.Printf("%c\n",c)//%ccharacter}输出结果:字符串修改不能直接修改,需要转成符文切片再修改s2:="小白兔"s3:=[]rune(s2)//强制把字符串转成符文切片s3[0]='big'//注意这里要用单引号字符,不能用双引号字符串fmt.Println(string(s3))//符文类型的S3强行转成字符串输出结果:一个大白兔字符和一个字符的区别字符串c1:="red"c2:='red'fmt.Printf("Typeofc1:%TTypeofc2:%T\n",c1,c2)c3:="H"c4:='H'fmt.Printf("typeofc3:%Ttypeofc4:%T\n",c3,c4)输出结果:typeofc1:stringofc2Type:int32Typeofc3:stringc4的类型:int32总结:我们发现只要双引号包裹的类型是string,单引号包裹的类型只要是int32,也就是rune。跟中文英文无关。知识点:rune的别名是int32类型转换n1:=10varffloat64f=float64(n1)fmt.Printf("f的类型是:%Tf的值是:%v\n",f,f)输出结果:f的类型为:float64f的值为:10总结字符串的修改要转成符文切片,不能像PHP那样直接修改。
