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

tar*_*lah 3 unicode utf-8 go

来自字符串博客文章:

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

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

  1. 你能给我一个不是的字符串文字的例子吗?
  2. 是什么在差之间"字符串文字","字符串值","字符串文字没有字节级逃逸".

Vol*_*ker 7

希望这可以帮助:

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

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

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