← 返回首页

什么是 rune 类型

Go 语言的字符有以下两种:

  • uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。

  • rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。

    package main
    import "fmt"
    

    func main() {
    var str = "hello 你好" //思考下 len(str) 的长度是多少?

    //golang中string底层是通过byte数组实现的,直接求len 实际是在按字节长度计算  
    //所以一个汉字占3个字节算了3个长度
    fmt.Println("len(str):", len(str))  // len(str): 12
    
    //通过rune类型处理unicode字符
    fmt.Println("rune:", len([]rune(str))) //rune: 8
    

    }