📌  相关文章
📜  Golang 中的符文

📅  最后修改于: 2021-10-24 13:29:49             🧑  作者: Mango

过去,我们只处理一种称为 ASCII 或美国信息交换标准代码的字符集。这里我们用7位来表示128个字符,包括大小写英文字母、数字以及各种标点符号和设备控制字符。因此,世界上的大量人口无法在计算机上使用自己的书写系统。所以为了解决这个问题,发明了Unicode。它是 ASCII 的超集,包含世界书写系统中存在的所有字符,包括重音符号和其他变音符号、制表符和回车符等控制代码,并为每个字符分配一个称为 Unicode 代码点的标准数字,或者在 Go 语言中,符文。符文类型是 int32 的别名。

要点:

  • 永远记住一个字符串是一个字节序列而不是一个符文。但是字符串可能包含以 UTF-8 编码的 Unicode 文本,正如我们所知,go 源代码始终编码为 UTF-8,因此不需要以 UTF-8 编码字符串。
  • UTF-8 将所有 Unicode 编码在 1 到 4 个字节之间,其中 1 个字节用于 ASCII,其余用于符文。
  • ASCII 总共包含 256 个元素。其中 128 是字符,0-127 被标识为代码点。这里的代码点是指代表单个值的元素。

例子:

它是一个十六进制值♄的符文。

符文字面量

它代表一个符文常量,其中一个整数值识别一个 Unicode 代码点。在 Go 语言中,符文字面量表示为用单引号括起来的一个或多个字符,如 ‘g’、’\t’ 等。在单引号之间,您可以放置除换行符和未转义单引号之外的任何字符。在这里,这些单引号字符本身表示给定字符的 Unicode 值,并且带有反斜杠的多字符序列(在多字符序列的开头)以不同的格式对值进行编码。在 rune 字面量,所有以反斜杠开头的序列都是非法的,只有以下单字符转义符在您将它们与反斜杠一起使用时表示特殊值:

Character Unicode Description
\a U+0007 Alert or Bell
\b U+0008 backspace
\f U+000C form feed
\n U+000A line feed or newline
\r U+000D carriage return
\t U+0009 horizontal tab
\v U+000b vertical tab
\\ U+005c backslash
\’ U+0027 single quote
\” U+0022 double quote(legal only in string literals)

示例 1:

// Simple Go program to illustrate
// how to create a rune
package main
  
import (
    "fmt"
    "reflect"
)
  
func main() {
  
    // Creating a rune
    rune1 := 'B'
    rune2 := 'g'
    rune3 := '\a'
  
    // Displaying rune and its type
    fmt.Printf("Rune 1: %c; Unicode: %U; Type: %s", rune1,
                             rune1, reflect.TypeOf(rune1))
      
    fmt.Printf("\nRune 2: %c; Unicode: %U; Type: %s", rune2,
                               rune2, reflect.TypeOf(rune2))
      
    fmt.Printf("\nRune 3: Unicode: %U; Type: %s", rune3, 
                                 reflect.TypeOf(rune3))
  
}

输出:

Rune 1: B; Unicode: U+0042; Type: int32
Rune 2: g; Unicode: U+0067; Type: int32
Rune 3: Unicode: U+0007; Type: int32

示例 2:

输出:

Character: ♛, Unicode:U+265B, Position:0 
Character: ♠, Unicode:U+2660, Position:1 
Character: ♧, Unicode:U+2667, Position:2 
Character: ♡, Unicode:U+2661, Position:3 
Character: ♬, Unicode:U+266C, Position:4