返回

Go 语言系列9:byte 和 rune

发布时间:2022-11-29 10:36:10 130
# php

byte ,只占用 ​​1​​​ 个字节,即 ​​8​​​ 位,其别名为 ​​uint8​​​ ,表示的是 ASCII 码表中的一个字符。下面的例子分别用 ​​byte​​​ 和 ​​uint8​​​ 定义了变量 ​​x​​​ 和 ​​y​​ 。

package main

import "fmt"

func main() {
var x byte = 65
var y uint8 = 65
fmt.Printf("x = %c\n", x) // x = A
fmt.Printf("y = %c\n", y) // y = A
}

在 ASCII 码表中,ASCII 码值 ​​65​​​ 所对应的字符为 ​​A​​​ 。所以上面的程序运行后都会输出字符 ​​A​​ 。当然,你也可以直接写成下面的形式,结果是一样的。

var x byte = 'A'
var y uint8 = 'A'

rune ,占用 ​​4​​​ 个字节,即 ​​32​​​ 位,其别名为 ​​uint32​​​ ,表示的是一个 ​​Unicode​​ 字符。

package main

import (
"fmt"
"unsafe"
)

func main() {
var x byte = 65
fmt.Printf("x = %c\n", x)
fmt.Printf("x 占用 %d 个字节\n", unsafe.Sizeof(x))

var y rune = 'A'
fmt.Printf("y = %c\n", y)
fmt.Printf("y 占用 %d 个字节\n", unsafe.Sizeof(y))
}

该程序运行后输出如下:

x = A
x 占用 1 个字节
y = A
y 占用 4 个字节

由此我们知道, byte 类型只能表示

var y rune = '我'

这里也许你不会注意到一个问题,那就是上面定义使用的都是 ​​单引号​​​ 。在 Go 中,单引号和双引号是不同的, ​​单引号​​​ 只是用来表示 ​​字符​​​ ,而 ​​双引号​​​ 表示 ​​字符串​​ ,所以平时在使用的时候一定要注意定义的是字符还是字符串。

参考文献:

[1] Alan A. A. Donovan; Brian W. Kernighan, Go 程序设计语言, Translated by 李道兵, 高博, 庞向才, 金鑫鑫 and 林齐斌, 机械工业出版社, 2017.




特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线