当前位置: 代码网 > it编程>前端脚本>Golang > golang中byte和rune用法及新手易错点总结

golang中byte和rune用法及新手易错点总结

2024年05月19日 Golang 我要评论
1 总体区别在golang中,byte和rune是两种不同类型的数据。简单来说,byte是一个8位的无符号整数类型,而rune则是一个32位的unicode字符类型。byte:在golang中,byt

1 总体区别

在golang中,byte和rune是两种不同类型的数据。简单来说,byte是一个8位的无符号整数类型,而rune则是一个32位的unicode字符类型

  • byte:
    • 在golang中,byte类型实际上是uint8的别名,它用来表示8位的无符号整数。通常用来存储ascii字符以及二进制数据。
    • 可以通过以下方式声明byte类型变量:
      var b byte = 65
      
  • rune:
    • 在golang中,rune类型实际上是int32的别名,用于表示unicode字符。这是因为unicode字符可能需要多个字节来表示,因此需要更多的存储空间。
    • 可以通过以下方式声明rune类型变量:
      var r rune = '文'
      

总的来说,byte用于表示单个字节的数据,而rune用于表示unicode字符,可以更好地支持多语言和复杂的文本处理。

2 常见错误

笔者在刷leecode在处理纯ascii字符的时候,常常分不清什么时候用rune,什么时候用byte。便用一下代码总结。
如以下题目:

// 在不考虑效率的情况下,只是为了单纯的说明什么时候用rune,什么时候用byte
func isanagram(s, t string) bool {
    if len(s) != len(t) {
        return false
    }
    sbyte := []byte(s)
    // sbyte 是byte类型的数组,所以数组内每个子元素都是byte类型的
    smap := make(map[byte]int)
    for _, b := range sbyte {
        smap[b]++
    }
    // 而t是string类型,所以此时返回的b其实是unicode字符,可以理解为rune类型
    // 所以此时b就需要类型转换为byte
    for _, b := range t {
        if smap[byte(b)] <= 0 {
            return false
        }
        smap[byte(b)]--
    }
    return true
}

总结 

到此这篇关于golang中byte和rune用法及新手易错点总结的文章就介绍到这了,更多相关golang byte和rune内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com