ZBLOG

golang ``和“”的区别

在 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23767

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?