内容简介:统一码联盟(Unicode Consortium)把名为代码点的一系列数值赋值给了上百万个独一无二的字符。 例如, 大写字母Go 语言提供了正如代码清单 9-4 所示,
统一码联盟(Unicode Consortium)把名为代码点的一系列数值赋值给了上百万个独一无二的字符。 例如, 大写字母 A
的代码点为 65
, 而笑脸表情:grin:的代码点则为 128515
。
Go 语言提供了 rune
(符文)类型用于表示单个统一码代码点, 该类型是 int32
类型的别名。 除此之外, Go 语言还提供了 uint8
类型的别名 byte
, 这种类型既可以表示二进制数据, 又可以表示由美国信息交换标准代码(ASCII)定义的英文字符 (历史悠久的 ASCII 包含 128 个字符,它是统一码的子集)。
正如代码清单 9-4 所示, byte
和 rune
跟它们为之创建别名的整数类型具有完全相同的表现。
代码清单 9-4 rune
和 byte
: rune.go
var pi rune = 960 var alpha rune = 940 var omega rune = 969 var bang byte = 33 fmt.Printf("%v %v %v %v\n", pi, alpha, omega, bang) // 打印出“96094096933”
为了打印出字符而不是数字值本身, 我们可以在 Printf
中使用格式化变量 %c
而不是 %v
:
fmt.Printf("%c%c%c%c\n", pi, alpha, omega, bang) // 打印出“πάω!”
Tip
虽然任意一种整数类型都可以使用格式化变量 %c
, 但是通过使用别名 rune
, 表明数字 960
代表字符而不是数字。
为了免除用户记忆统一码代码点的烦恼, Go 提供了相应的字符字面量句法。 用户只需要像 'A'
这样使用单引号将字符包围起来, 就可以取得该字符的代码点。 如果用户声明了一个字符变量却没有为其指定类型, 那么 Go 将推断该变量的类型为 rune
, 因此以下 3 行代码将是等效的:
grade := 'A' var grade = 'A' var grade rune = 'A'
虽然 rune
类型代表的是一个字符, 但它实际存储的仍然是数字值, 因此 grade
变量存储的仍然是大写字母 'A'
的代码点, 也就是数字 65
。 除 rune
之外, 字符字面量也可以搭配别名 byte
一同使用:
var star byte = '*'
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 字符串的长度,是字符数量,还是字节数量?
- Go语言中多字节字符的处理
- Go语言之父带你重新认识字符串、字节、rune和字符
- 谈 Golang 中的字符串和字节数组
- [译] Go 语言之父带你重新认识字符串、字节、rune 和字符
- 如何使用Perl将48个十六进制字符串转换为字节?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
智能家居:商业模式+案例分析+应用实战
陈国嘉 / 人民邮电出版社 / 2016-4 / 49.80元
作为万物互联的关键一环,智能家居的出现和普及已经势不可当,以移动互联网为核心的新技术正在重构智能家居。只有成为智能家居行业的先行者,才能抢占“风口”。 《智能家居:商业模式+案例分析+应用实战》紧扣“智能家居”,从3个方面进行专业、深层次的讲解。首要方面是基础篇,从智能家居的发展现状、产业链、商业分析、抢占入口等方面进行阐述,让读者对智能家居有个初步的认识;第二个方面是技术篇,从智能家居的控......一起来看看 《智能家居:商业模式+案例分析+应用实战》 这本书的介绍吧!