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 协议》,转载必须注明作者和本文链接