简述一下Go的 rune 类型?
在Go语言中,rune
是int32
的别名,通常用于处理Unicode字符。Unicode是一种字符集,它可以表示世界上大多数的文字字符,包括各种符号、表情符号等。
每个rune
值代表一个Unicode字符的Unicode码点。例如,字母A
的Unicode码点是65
,因此,你可以用rune
值65
来表示字母A
。
下面是一个使用rune
的例子:
package main
import "fmt"
func main() {
var r rune = 'A'
fmt.Println(r) // 输出:65
fmt.Printf("%c\n", r) // 输出:A
}
在这个例子中,我们创建了一个rune
变量r
,并赋予了它字母A
的Unicode码点。然后,我们打印了这个rune
值和它代表的字符。
需要注意的是,Go语言的字符串是由rune
序列组成的。可以通过遍历字符串来处理每个rune
,例如:
package main
import "fmt"
func main() {
s := "hello, 世界"
for i, r := range s {
fmt.Printf("%d: %c\n", i, r)
}
}
在这个例子中,我们遍历了字符串s
的每个rune
,并打印了它的位置和它代表的字符。由于rune
可以正确处理Unicode字符,所以这个例子可以正确打印出ASCII字符和非ASCII字符。