s:= "hello,我的世界"
fmt.Println(len(s))
fmt.Println(utf8.RuneCountInString(s))
for i:=0;i<len(s);i++{
fmt.Printf("%c\t",s[i])
}
fmt.Println()
for _,value:=range s{
fmt.Printf("%c\t",value)
}
输出:
18
10
h e l l o , æ ˆ ‘ ç š „ ä ¸ – ç • Œ
h e l l o , 我 的 世 界
go语言有两种表示字符串的方法:
1.双引号,使用转义字符
2.单引号,不使用转义字符,字符串内容将和赋值保持严格一致
在go语言中,没有字符类型,rune就是字符类型
变量 s 中存放的是字符串的 UTF-8 编码,当你使用 len(s) 函数获取字符串的长度时,获取的是该字符串的 UTF-8 编码长度。通常我们认为,在电脑中存储一个 ASCII 字符需要一个字节,存储一个非 ASCII 字符需要两个字节,这种认为仅仅是针对 Windows 系统中常用的 ANSI 编码而言的,而在 Go 语言中,使用的是 UTF-8 编码,用 UTF-8 编码来存放一个 ASCII 字符依然只需要一个字节,而存放一个非 ASCII 字符,则需要 2个、3个、4个字节,它是不固定的。