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发明的术语。

听到“符文​​”一词时,您可以将其视为以下任何一项或全部:

  1. 一个整数。 (可能的值是从0到2 ^ 32-1,但并非所有值都是有效的Unicode代码点。)
  2. 带有关键字符文的golang类型。它是int32类型的别名
  3. Unicode代码点。
  4. 一个角色。

符文的例子

请参阅以下代码。

// 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 +开头,后跟十六进制的代码点。例如,

  1. 空间→U + 20
  2. K→U + 004B
  3. ♥→U +
  4. ?→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变量

高朗常数

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Krunal所有,未经许可,不得转载
你可能还喜欢