文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
字符串字面量
字符串字面量表示从字符序列中获取的字符串常量。它有两种格式:原始字符串字面量和解释型字符串字面量。
原始字符串是由反引号包裹( foo
)。字符串中除反引号以外的其他字符都会显示出来。原生字符串由反引号之间的(默认 UTF-8 编码)的字符组成。它的值为引号内未经解释(默认 UTF-8 编码)所有字符;尤其是,反斜线再字符串中没有特殊意义并且字符串中保留换行符。在原始字符串的值中会丢弃回车键返回 '\r' 字符。
解释型字符串由双引号之间的字符组成("bar")。除了换行符和双引号其他字符都会显示出来。双引号之间的文本组成字面量的值。反斜线的转义规则与 rune 字面量基本相同(不同的是 \’ 非法,而 " 合法)。三位八进制数(\nnn)和两位十六进制数(\xnn)换码符的值表示相应字符串的字节。其他的换码符都表示字符各自的 UTF-8 编码(可能是多字节)。因此字符串 \377 和 \xFF 都表示值为 0xFF=255 的单个字节,而 ÿ
, \u00FF
, \U000000FF
和 \xc3\xbf
表示 UTF-8 编码字符 U+00FF 的两个字节 0xc3 0xbf。
string_lit = raw_string_lit | interpreted_string_lit .
raw_string_lit = "`" { unicode_char | newline } "`" .
interpreted_string_lit = `"` { unicode_value | byte_value } `"` .
`abc` // 等价于 "abc"
`\n
\n` // 等价于 "\\n\n\\n"
"\n"
"\"" // 等价于 `"`
"Hello, world!\n"
"日本語"
"\u65e5 本\U00008a9e"
"\xff\u00FF"
"\uD800" // 无效: surrogate half
"\U00110000" // 无效: 无效的 Unicode 代码点
这些例子都表示相同的字符串:
"日本語" // UTF-8 文本
`日本語` // UTF-8 文本作为原生字面值
"\u65e5\u672c\u8a9e" // 确定的 Unicode 代码点
"\U000065e5\U0000672c\U00008a9e" // 确定的 Unicode 代码点
"\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e" // 确定的 UTF-8 字节
如果源代码中使用两个代码点表示一个字符,例如带音标的字母,把它放在 rune 中会报错(它不是单代码点)。并且在字符串中会显示两个代码点。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论