ChatGPT解决这个技术问题 Extra ChatGPT

golang中的反引号(``)和双引号(“”)有什么区别?

go

golang中的反引号(``)和双引号(“”)有什么区别?


g
gonutz

在引号 "" 中,您需要转义不需要在反引号 `` 中转义的新行、制表符和其他字符。如果您在反引号字符串中放置换行符,则会将其解释为 '\n' 字符,请参阅 https://golang.org/ref/spec#String_literals

因此,如果您在反引号字符串中输入 \n,它将被解释为文字反斜杠和字符 n。

a := "\n" // This is one character, a line break.
b := `\n` // These are two characters, backslash followed by letter n.

因此,在 C# 术语中,反引号 `` 类似于 @"" 而双引号 "" 与 C# 双引号字符串完全相同。那很整齐。遗憾的是,JS 世界在几年后使用反引号 `` 进行字符串插值 - 在撰写本文时,GoLang 根本不支持这一点。我之所以这么简单,是因为 JS 现在很流行,很多开发人员在使用 GoLang 时都会摸不着头脑。
k
kirbyquerby

反引号字符串类似于 Python 或 Scala 中的多行原始字符串:r""" text """ 或 JavaScript:

String.raw`Hi\u000A!`

他们能:

跨越多行。忽略特殊字符。

它们很有用:

用于将大文本放入其中。当您有很多反斜杠时,用于正则表达式。用于将双引号放入的结构标签。


c
celerno

原始字符串文字是反引号之间的字符序列。反斜杠 ('\') 没有特殊含义,原始字符串文字中的回车符 ('\r') 会从原始字符串值中丢弃。

解释的字符串文字是双引号之间的字符序列(“\r”、“\n”、...)

来源:http://ispycode.com/GO/Strings/Raw-string-literals


D
Dami

`` 表示未解释的字符串,"" 是解释的字符串。

原始字符串文字(未解释的字符串)的值是由引号之间的未解释(隐式 UTF-8 编码)字符组成的字符串。解释的字符串文字是双引号之间的字符序列,如“bar”。在引号内,可以出现除换行符和非转义双引号外的任何字符。

PS:斜体字是我的

https://golang.org/ref/spec#String_literals


I
IndikaM

golang 有三种类型的引用。单引号、双引号或反引号(反引号)

单引号 - 表示对应于 uint8 或 int32 的字节类型或符文类型以及默认符文类型。通常用于表示符文类型并显示 Unicode。

双引号 - 表示字符串是 char 数组。因此,您可以使用数组索引来访问字节或使用像 len() 这样的函数。

反引号(反引号) - 表示字符串文字,但不支持转义序列。通常用于显示多行等字符串文字