字符串文字和字符串值之间的区别?

时间:2013-11-29 16:03:34

标签: unicode utf-8 go

来自strings博文:

  

有些人认为Go字符串总是UTF-8,但它们不是:仅   字符串文字是UTF-8。正如我们在上一节中所示,   字符串值可以包含任意字节;正如我们在这一节中所展示的,   字符串文字总是包含UTF-8文本,只要它们没有   字节级转义。

     

总而言之,字符串可以包含任意字节,但何时   从字符串文字构造,这些字节(几乎总是)   UTF-8。

  1. 你能给我一个不是的字符串文字的例子吗?
  2. “字符串文字”“字符串值”“没有字节级转义的字符串文字”之间的区别是什么

1 个答案:

答案 0 :(得分:7)

希望这会有所帮助:

  1. 正如32bitkid所说:Go源代码中的以下字符是一个字符串文字,其值不是UTF-8编码的:"\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"

  2. “字符串文字”的概念仅存在于Go源代码中,并且在已编译或甚至正在运行的程序中没有任何表示。 Go源代码中的字符串文字写为"cat dog",如果您的字符串文字需要包含键盘丢失的内容(或者编辑器无法显示),您可以使用“字节级别转义”,例如"cat\x07dog" 。一旦你的Go源代码被编译,字符串文字的概念就会消失:只有字符串,它们有一些价值。此值可以在代码运行期间计算,也可以由源中“字符串文字”生成的值组成。

  3. “字符串文字”用于将“数字文字”字符串用于字符串:“abc”是字符串文字,20是int文字。两者可能具有不同的表示,例如“\ x61bc”和0x14。但是一旦你的代码被编译,你的int值是来自文字20还是0x14没有区别。与字符串相同。只有并发症:Go源代码总是UTF-8。