Golang 符文
在过去,我们只有一个字符集,那就是ASCII(美国信息交换标准代码)。在那里,我们用7个比特来表示128个字符,包括大写和小写英文字母、数字以及各种标点符号和设备控制字符。由于这种字符的限制,大多数人无法使用他们自定义的书写系统。为了解决这个问题,Unicode被发明了。Unicode是ASCII的一个超集,包含了当今世界书写系统中的所有字符。它包括重音、变音符号、控制代码(如制表符和回车符),并为每个字符分配一个标准数字,称为 “Unicode代码点”,或在Go语言中称为 “符文”。符文类型是int32的一个别名。
重要提示
- 永远记住,字符串是一个字节的序列,而不是一个符文的序列。字符串可以包含以UTF-8编码的Unicode文本。但是,Go源代码编码为UTF-8,因此,不需要用UTF-8编码的字符串。
 - UTF-8对1到4个字节范围内的所有Unicode进行编码,其中1个字节用于ASCII,其余用于符码。
 - ASCII总共包含256个元素,其中128个是字符,0-127个被确定为码位。这里,码位指的是代表一个单一数值的元素。
 
例子
 ♄
它是一个符文,十六进制值为♄。
符文字面
它代表了一个符文常量,其中一个整数值可以识别一个Unicode码位。在Go语言中,Rune Literal表示为一个或多个用单引号括起来的字符,如’g’, ‘\t’等。在单引号之间,你可以放置任何字符,除了换行和未转义的单引号。在这里,这些单引号字符本身代表了给定字符的Unicode值,而带有反斜杠的多字符序列(在多字符序列的开头)则以不同的格式编码值。在符文文学中,所有以反斜杠开头的序列都是非法的,只有以下单字符转义在你使用反斜杠时代表特殊的值。
| 字符 | Unicode | 说明 | 
|---|---|---|
| \a | U+0007 | 警报或铃声 | 
| \b | U+0008 | backspace | 
| \f | U+000C | form feed | 
| \n | U+000A | 换行或换行 | 
| \r | U+000D | 回车 | 
| \t | U+0009 | 水平制表符 | 
| \v | U+000b | vertical tab | 
| \\ | U+005c | 反斜线 | 
| \’ | U+0027 | 单引号 | 
| \” | U+0022 | 双引号(仅在字符串字元中合法) | 
例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 
极客教程