Golang中的符文是什么?符文例子
Golang符文类型是int32的别名,用于表示一个整数代表代码点。 ASCII定义128个字符,由代码点0–127标识。它涵盖英文字母,拉丁数字和其他一些字符。 Unicode是ASCII的超集,它定义了1,114,112个代码点的代码空间。 Unicode版本10.0涵盖139个现代和历史脚本(包括符文字母,但不包括Klingon)以及多个符号集。
ASCII的历史
内容概述
- 1 ASCII的历史
- 2个字符串和UTF-8编码
- 3 Golang中的符文是什么
- 4符文榜样
- 5 Codepoint的Unicode标准符号
- 6印刷符文
- 7结论
- 8另请参见
ASCII代表美国信息交易所标准代码,它是电子通信的字符编码标准。 ASCII码代表计算机,电信设备和其他设备中的文本。
在过去的几年中,我们处理一个字符集,即ASCII。它使用7位来表示128个字符,包括大写和小写英文字母,数字以及各种标点符号和设备控制字符。因此,世界上许多人无法在计算机上使用他们的书写系统。
因此,发明了Unicode来解决这个问题。它是ASCII的超集,包含世界上书写系统中存在的所有字符。
Unicode为每个数字分配一个称为Unicode代码点的标准编号,或在Go语言中为一个符文。符文类型是int32的别名。
字符串和UTF-8编码
但是,字符串通常包含以UTF-8编码的Unicode文本,该文本使用一到四个字节对所有Unicode代码点进行编码。 (ASCII字符使用一个字节编码,而其他代码点则使用更多字节。)
由于Go源代码本身被编码为UTF-8,因此字符串文字将自动获得此编码。
例如,在字符串中 "Garçon"
性格 ç
使用两个字节编码,而ASCII字符G,a,r,o和n)仅使用一个。
请参阅以下代码。
// hello.go package main import ( "fmt" ) func main() { fmt.Println([]byte("Garçon")) fmt.Println([]rune("Garçon")) }
输出量
go run hello.go [71 97 114 195 167 111 110] [71 97 114 231 111 110]
什么是Golang的符文
符文文字只是32位整数值(但是,它们是未类型化的常量,因此它们的类型可以更改)。它们代表Unicode代码点。例如,符文文字“ a”是数字97。
符文文字表示符文常量,其中整数值可识别Unicode代码点。
在Go语言中,符文表示为用单引号括起来的一个或多个字符,例如“ g”,“ t”等。在单引号之间,您可以放置除换行符和未转义的单引号以外的任何字符。 Golang字符串是Golang中的字节序列。
UTF-8在1至4个字节之间对所有Unicode进行编码,其中1个字节用于ASCII,其余部分用于符文。 ASCII总共包含256个元素。其中128个字符,0-127被标识为代码点。这里的代码点是指表示单个值的元素。
“ Rune”表示Unicode代码点。 (将其视为字符。)这是golang发明的术语。
听到“符文”一词时,您可以将其视为以下任何一项或全部:
- 一个整数。 (可能的值是从0到2 ^ 32-1,但并非所有值都是有效的Unicode代码点。)
- 带有关键字符文的golang类型。它是int32类型的别名
- Unicode代码点。
- 一个角色。
符文的例子
请参阅以下代码。
// hello.go package main import ( "fmt" "reflect" ) func main() { // Creating a rune runeK := 'K' runeb := 'b' runef := '\' // Displaying rune and its type fmt.Printf("Rune 1: %c; Unicode: %U; Type: %s", runeK, runeK, reflect.TypeOf(runeK)) fmt.Printf("nRune 2: %c; Unicode: %U; Type: %s", runeb, runeb, reflect.TypeOf(runeb)) fmt.Printf("nRune 3: Unicode: %U; Type: %s", runef, reflect.TypeOf(runef)) }
输出量
go run hello.go Rune 1: K; Unicode: U+004B; Type: int32 Rune 2: b; Unicode: U+0062; Type: int32 Rune 3: Unicode: U+005C; Type: int32
编码点的Unicode标准符号
Unicode具有代码点的标准符号,以U +开头,后跟十六进制的代码点。例如,
- 空间→U + 20
- K→U + 004B
- ♥→U +
- ?→U + 1F923
印刷符文
符文是代码点;这就是为什么它是整数。
以下Printf格式使用整数:
%c→字符原样。
%q→符文语法。例如’一种’。
%U→Unicode表示法。例如U + 03B1。
%b→以2为底
%o→以8为底
%d→以10为底
%x→以16为底,a-f为小写字母
如上例所示,我们已经打印了符文值。
结论
符文是类型。它占用32位,用于表示Unicode CodePoint。
以此类推,以“ ASCII”编码的英文字符集具有128个代码点。因此可以放入字节(8bit)内。
基于这种(错误的)假设,C将字符视为“字节”字符,将“字符串”视为“字符序列”字符*。
但是,您猜怎么着呢,除了“ abcde …”符号,还有人类发明的许多其他符号。太多了,我们需要32位对其进行编码。
在golang中,字符串是字节序列。但是,由于多个字节可以表示符文代码点,因此字符串值也可以包含符文。因此,可以将其转换为 []符文,反之亦然。
也可以看看
Golang介绍
在MacOS上安装Golang
Golang中的标识符
Golang变量
高朗常数