本篇基于 Go 1.25.1 版本,一次性讲透原始字符串字面量(反引号 `),让你彻底掌握用法、区别、坑点,写代码更清爽✅
一、什么是原始字符串字面量?
使用反引号 ` 包裹的字符串,叫做原始字符串字面量。
核心特点:
✅ 所见即所得
✅ 不支持任何转义(\n \t 都原样输出)
✅ 可以直接换行
✅ 双引号、单引号随便写,不用转义
二、普通字符串 vs 原始字符串(最强对比表)
| 特性 | 普通字符串 " " | 原始字符串 ` ` |
|---|---|---|
| 包裹符号 | 双引号 " | 反引号 ``` |
| 直接换行 | ❌ 不允许 | ✅ 允许(直接回车) |
| 转义字符 | ✅ 支持 \n \t \" | ❌ 完全不支持 |
反斜杠 \ | 表示转义 | 就是普通字符 |
双引号 " | 需要转义 \" | 直接写,无需转义 |
反引号 ` | 普通字符 | 结束符号,不能嵌套 |
| 适用场景 | 简短文本、需要转义 | 路径、JSON、HTML、多行文本 |
三、超清晰示例
1. 普通字符串(双引号)
// 必须用 \n 换行,引号要加 \ 转义
s := "你好\nGo语言\t\"学习中\""2. 原始字符串(反引号)
// 直接换行、直接写引号,完全原样输出
s := `
第一行
第二行
直接写"双引号"不用转义
\n \t 都会原样显示
`四、最实用场景(必学)
1. 文件路径(再也不用双斜杠 \)
// 普通字符串(麻烦)
path := "C:\\Users\\test\\main.go"
// 原始字符串(清爽)
path := `C:\Users\test\main.go`2. 多行 JSON / HTML
jsonStr := `{
"name": "Go学习",
"age": 18
}`
html := `<div class="box">
<p>内容</p>
</div>`五、完整可运行 Demo(直接复制跑通)
package main
import "fmt"
func main() {
// 1. 普通字符串
fmt.Println("===== 普通字符串 =====")
normal := "Hello\nGo\t\"学习\""
fmt.Println(normal)
// 2. 原始字符串
fmt.Println("\n===== 原始字符串 =====")
raw := `
Hello
Go "学习"
\n \t 原样输出
`
fmt.Println(raw)
// 3. 文件路径
fmt.Println("\n===== 文件路径 =====")
path := `D:\Go\src\main.go`
fmt.Println(path)
}运行命令:
go run main.go运行结果:
===== 普通字符串 =====
Hello
Go "学习"
===== 原始字符串 =====
Hello
Go "学习"
\n \t 原样输出
===== 文件路径 =====
D:\Go\src\main.go六、重要注意事项
- 1. 原始字符串里不能直接写反引号,会报错
// 错误 s := `hello ` world` - 2. 想在原始字符串里写反引号,必须字符串拼接
s := `hello` + "`" + `world` - 3.
\n\t\在原始字符串里都是普通字符
📌 最终总结
- 1. 原始字符串 = 反引号
` - 2. 不转义、直接换行、所见即所得
- 3. 适合写路径、JSON、HTML、多行文本
- 4. 普通字符串
"适合短文本、需要转义时 - 5. 唯一不能直接写的字符:反引号本身
学会原始字符串,Go 代码书写体验直接起飞✨
MiaoAll