当前位置 : 主页 > 网络编程 > PHP >

Go 语言系列9:byte 和 rune

来源:互联网 收集:自由互联 发布时间:2023-09-06
byte ,只占用 ​ ​1​ ​​ 个字节,即 ​ ​8​ ​​ 位,其别名为 ​ ​uint8​ ​​ ,表示的是 ASCII 码表中的一个字符。下面的例子分别用 ​ ​byte​ ​​ 和 ​ ​uint8​ ​​ 定义

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.




上一篇:LeetCode 1137.第 N 个泰波那契数(简单)
下一篇:没有了
网友评论