美文网首页
rune数据类型

rune数据类型

作者: 小幸运Q | 来源:发表于2021-02-16 10:53 被阅读0次

    //int32的别名,几乎在所有方面等同于int32
    //它用来区分字符值和整数值
    
    type rune = int32
    

    byte 等同于int8,常用来处理ascii字符
    rune 等同于int32,常用来处理unicode或utf-8字符

    package main
    
    import "fmt"
    
    func main() {
    
        var str = "hello 你好"
        fmt.Println("len(str):", len(str))
    
    }
    

    golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。

    如果我们预期想得到一个字符串的长度,而不是字符串底层占得字节长度,该怎么办呢?

    package main
    
    import (
        "fmt"
        "unicode/utf8"
    )
    
    func main() {
    
        var str = "hello 你好"
    
        //golang中string底层是通过byte数组实现的,座椅直接求len 实际是在按字节长度计算  所以一个汉字占3个字节算了3个长度
        fmt.Println("len(str):", len(str))
        
        //以下两种都可以得到str的字符串长度
        
        //golang中的unicode/utf8包提供了用utf-8获取长度的方法
        fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))
    
        //通过rune类型处理unicode字符
        fmt.Println("rune:", len([]rune(str)))
    }
    

    相关文章

      网友评论

          本文标题:rune数据类型

          本文链接:https://www.haomeiwen.com/subject/ednfxltx.html