我们如何使用超出代码点U+265F的符文文字的表情符号?
a1 := '\u2665'
a2 := '\u1F3A8'
有没有一种方法可以将较高位置的表情符号表示为符文文字?
发布于 2021-03-02 12:47:52
您可以使用\U序列,然后是8十六进制数字,这是Unicode编码点的十六进制表示。这在规范:符文文字:中有详细说明。
将整数值表示为数字常量有四种方法:
\x后面紧跟两个十六进制数字;\u后面紧跟四个十六进制数字;\U后面紧跟八个十六进制数字;以及一个普通反斜杠\,后面紧跟三个八进制数字。在每种情况下,文字的值都是由对应基中的数字表示的值。
例如:
a1 := '\u2665'
fmt.Printf("%c\n", a1)
a2 := '\U0001F3A8'
fmt.Printf("%c\n", a2)哪个输出(在围棋游乐场上尝试):
♥注(回复@torek):
我相信Go作者选择了精确要求4和8十六进制数字,因为这允许使用完全相同的形式,完全相同的符文文字在解释字符串文字。例如,如果您想要一个包含2个runes的字符串,其中一个具有代码点0x0001F3A8,另一个符文是4,则可以如下所示:
s := "\U0001F3A84"如果规范不需要精确的8十六进制数字,那么最后一个'4'是代码点的一部分还是字符串的单个符文,那么就必须将string分解为像"\U1F3A8" + "4"这样的级联。
解释字符串文字是双引号之间的字符序列,如在
"bar"中。在引号中,除换行符和未转义双引号外,任何字符都可能出现。引号之间的文本形成文字的值,反斜杠在符文中被解释为反斜杠(除了\'是非法的,\"是合法的),也有同样的限制。三位八进制(\nnn)和两位十六进制(\xnn)转义表示结果字符串的单个字节;所有其他转义表示单个字符(可能是多字节)的UTF-8编码。因此,在字符串文本\377中,\xFF表示单个字节的值0xFF=255,而ÿ、\u00FF、\U000000FF和\xc3\xbf表示字符U+00FF的UTF-8编码的两个字节0xc3 0xbf。
https://stackoverflow.com/questions/66439627
复制相似问题