来自strings博文:
有些人认为Go字符串总是UTF-8,但它们不是:仅 字符串文字是UTF-8。正如我们在上一节中所示, 字符串值可以包含任意字节;正如我们在这一节中所展示的, 字符串文字总是包含UTF-8文本,只要它们没有 字节级转义。
总而言之,字符串可以包含任意字节,但何时 从字符串文字构造,这些字节(几乎总是) UTF-8。
答案 0 :(得分:7)
希望这会有所帮助:
正如32bitkid所说:Go源代码中的以下字符是一个字符串文字,其值不是UTF-8编码的:"\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"
。
“字符串文字”的概念仅存在于Go源代码中,并且在已编译或甚至正在运行的程序中没有任何表示。 Go源代码中的字符串文字写为"cat dog"
,如果您的字符串文字需要包含键盘丢失的内容(或者编辑器无法显示),您可以使用“字节级别转义”,例如"cat\x07dog"
。一旦你的Go源代码被编译,字符串文字的概念就会消失:只有字符串,它们有一些价值。此值可以在代码运行期间计算,也可以由源中“字符串文字”生成的值组成。
“字符串文字”用于将“数字文字”字符串用于字符串:“abc”是字符串文字,20是int文字。两者可能具有不同的表示,例如“\ x61bc”和0x14。但是一旦你的代码被编译,你的int值是来自文字20还是0x14没有区别。与字符串相同。只有并发症:Go源代码总是UTF-8。