golang 的 rune 和 byte

  1. go语言中runte 和 byte实际上是 uint8 和int32类型。byte用来强调数据是raw data,而不是数字;而rune用来表示Unicode的code point。参考规范:
    uint8 the set of all unsigned 8-bit integers (0 to 255)
    int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
    byte alias for uint8
    rune alias for int32
    2.[s]runte 和 [s]byte 的区别

golang 的 rune 和 byte
从输出来看, 没有任何区别, 作者不可能无缘无故弄出两个相同的东西,那么到底区别在哪里呢?翻看源码才知道

golang 的 rune 和 byte

这里也可以很清晰的看出这里的中文字符串每个占三个字节, 区别也就一目了然了。
我们可以测试一下切片截取中文字符串和英文字符串的区别

golang 的 rune 和 byte
英文字符串能正常的截取,中文字符串截取乱码。
那么该如何截取呢?这里就需要将中文利用 [] rune 转换成 unicode 码点, 再利用 string 转化回去

参考文章http://www.cnblogs.com/sunsky303/p/9764910.html

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!