1 回答

TA貢獻1895條經驗 獲得超3個贊
您可以使用序列后跟 8 個十六進制數字,這是 Unicode 碼位的十六進制表示形式。這在 Spec: Rune literals 中有詳細說明:\U
有四種方法可以將整數值表示為數字常量:后跟兩個十六進制數字; 后跟正好四個十六進制數字; 后跟正好八個十六進制數字,以及一個普通的反斜杠,后面正好跟著三個八進制數字。在每種情況下,文本的值都是由相應基數中的數字表示的值。\x\u\U\
例如:
a1 := '\u2665'
fmt.Printf("%c\n", a1)
a2 := '\U0001F3A8'
fmt.Printf("%c\n", a2)
哪些輸出(在Go Playground上嘗試):
?
??
注(對@torek的答復):
我相信Go的作者選擇要求正好4和8個十六進制數字,因為這允許在解釋的字符串文本中使用完全相同的形式,完全相同的符文文字。例如,如果你想要一個包含2個符文的字符串,一個有代碼點,另一個有符文,它可能看起來像這樣:0x0001F3A84
s := "\U0001F3A84"
如果規范不需要正好 8 個十六進制數字,那么最后一個是碼位的一部分還是字符串的單個符文都是模棱兩可的,因此您必須將 斷開為類似 .'4'string"\U1F3A8" + "4"
規范: 字符串文本:
解釋型字符串文本是雙引號之間的字符序列,如 中所示。在引號中,除了換行符和未轉義的雙引號之外,任何字符都可能出現。引號之間的文本構成文本的值,反斜杠轉義被解釋為它們在符文文本中(除了是非法的并且是合法的),具有相同的限制。三位數的八進制 () 和兩位數的十六進制 () 轉義表示結果字符串的各個字節;所有其他轉義表示單個字符的(可能是多字節)UTF-8 編碼。因此在字符串文本中表示一個值的單個字節,而 、 和 表示兩個字節的 UTF-8 編碼字符 U+00FF。"bar"\'\"\nnn\xnn\377\xFF0xFF=255?\u00FF\U000000FF\xc3\xbf0xc3 0xbf
- 1 回答
- 0 關注
- 142 瀏覽
添加回答
舉報