Go 语言中的字符、代码点、符文和字节

栏目: IT技术 · 发布时间: 4年前

内容简介:统一码联盟(Unicode Consortium)把名为代码点的一系列数值赋值给了上百万个独一无二的字符。 例如, 大写字母Go 语言提供了正如代码清单 9-4 所示,

统一码联盟(Unicode Consortium)把名为代码点的一系列数值赋值给了上百万个独一无二的字符。 例如, 大写字母 A 的代码点为 65 , 而笑脸表情:grin:的代码点则为 128515

Go 语言提供了 rune (符文)类型用于表示单个统一码代码点, 该类型是 int32 类型的别名。 除此之外, Go 语言还提供了 uint8 类型的别名 byte , 这种类型既可以表示二进制数据, 又可以表示由美国信息交换标准代码(ASCII)定义的英文字符 (历史悠久的 ASCII 包含 128 个字符,它是统一码的子集)。

正如代码清单 9-4 所示, byterune 跟它们为之创建别名的整数类型具有完全相同的表现。

代码清单 9-4 runebyte : 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 = '*'

Note

本文摘录自《Go语言趣学指南》第 9 章, 请访问 gpwgcn.com 以获取更多相关信息。

Go 语言中的字符、代码点、符文和字节

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解机器学习

图解机器学习

杉山将 / 许永伟 / 人民邮电出版社 / 2015-4 / 49

本书用丰富的图示,从最小二乘法出发,对基于最小二乘法实现的各种机器学习算法进行了详细的介绍。第Ⅰ部分介绍了机器学习领域的概况;第Ⅱ部分和第Ⅲ部分分别介绍了各种有监督的回归算法和分类算法;第Ⅳ部分介绍了各种无监督学习算法;第Ⅴ部分介绍了机器学习领域中的新兴算法。书中大部分算法都有相应的MATLAB程序源代码,可以用来进行简单的测试。 本书适合所有对机器学习有兴趣的初学者阅读。 187张图......一起来看看 《图解机器学习》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具