在 Go 语言中,反引号 `
** 和 **双引号 " "
用于定义字符串,但它们在功能和行为上有重要区别:
1. 双引号 " "
(普通字符串)
- 特点:
- 支持转义字符(如
\n
,\t
,\"
)。 - 不能跨行(换行会报错)。
- 支持转义字符(如
- 示例:
输出:s := "Hello,\nWorld!" // \n会被解析为换行符 fmt.Println(s)
Hello, World!
2. 反引号 `
(Raw String Literal,原始字符串)
- 特点:
- 不处理转义字符(内容完全原样输出)。
- 支持跨行(直接保留换行和缩进)。
- 示例:
“
go s :=
Hello,\nWorld!` // \n不会被转义,原样输出 fmt.Println(s)
多行文本 := `
Line1
Line2
Line3`
输出:
Line1 Line2 Line3`
3. ⚠️关键区别总结
特性 | 双引号 " " |
反引号 ` |
---|---|---|
转义字符处理 | ✅(如\n 变为换行) |
❌(原样输出\n ) |
跨行支持 | ❌(编译错误) | ✅(保留换行和缩进) |
JSON/正则表达式友好度 | ❌需频繁转义 | ✅推荐使用 |
(4) JSON/正则表达式的场景
// ❌双引号需要转义,可读性差
jsonStr := "{\"name\":\"Alice\",\"age\":25}"
// ✅反引号更清晰
jsonStr := `{"name":"Alice","age":25}`
//正则表达式同样适用
regexp.MustCompile(`^\d+$`) //比"^\\d+$"更简洁
(5) SQL查询模板
query := `
SELECT * FROM users
WHERE age > ?
ORDER BY name DESC`
📌注意:反引号字符串中的空格和换行会被保留!
4.如何选择?
用双引号
" "
: 需要转义字符时(如动态生成带换行的字符串)。用反引号
`
: 处理多行文本、JSON、正则表达式、SQL等无需转义的场景。
通过合理选择两种字符串字面量,可以显著提升代码的可读性和维护性!
内容由零声教学AI助手提供,问题来源于学员提问