• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言中的byte和rune区别、对比

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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

可以通过下面程序验证:

package main

import "fmt"

func byteSlice(b []byte) []byte {
    return b
}

func runeSlice(r []rune) []rune {
    return r
}

func main() {
    b := []byte{0, 1}
    u8 := []uint8{2, 3}
    fmt.Printf("%T %T \n", b, u8)
    fmt.Println(byteSlice(b))
    fmt.Println(byteSlice(u8))

    r := []rune{4, 5}
    i32 := []int32{6, 7}
    fmt.Printf("%T %T \n", r, i32)
    fmt.Println(runeSlice(r))
    fmt.Println(runeSlice(i32))
}

执行结果如下:

[]uint8 []uint8
[0 1]
[2 3]
[]int32 []int32
[4 5]
[6 7]


package main

import (
    "fmt"
)

func main() {
    var indexRuneTests = []struct {
        s    string
        rune rune
        out  int
    }{
        //string用反引号能换行, 但不支持转义, rune是一个uint32,即一个unicode字符
        {`as\n
        df`, 'A', 2},
        //用双引号不能换行, 但支持转义如"\n\t..",  rune是一个uint32,即一个unicode字符
        {"some_text\n=some_value", '=', 9},
        {"☺a", '', 3},
        {"a☻☺b", '', 4},
    }

    fmt.Println("Hello, playground",indexRuneTests)
}
Hello, playground [{as\n
        df 65 2} {some_text
=some_value 61 9} {☺a 9786 3} {a☻☺b 9786 4}]

 

参考资料:
Difference between []uint8 && []byte (Golang Slices)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Go]go语言中使用方法声明给类定义方法发布时间:2022-07-10
下一篇:
[Go]golang获取程序执行的绝对路径发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap