📜 Go 原始字符串字面量|反引号 ` 用法 + 与普通字符串完整版对比

2026-06-27 110 0

本篇基于 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. 1. 原始字符串里不能直接写反引号,会报错
    // 错误
    s := `hello ` world`
  2. 2. 想在原始字符串里写反引号,必须字符串拼接
    s := `hello` + "`" + `world`
  3. 3. \n \t \ 在原始字符串里都是普通字符

📌 最终总结

  1. 1. 原始字符串 = 反引号 `
  2. 2. 不转义、直接换行、所见即所得
  3. 3. 适合写路径、JSON、HTML、多行文本
  4. 4. 普通字符串 " 适合短文本、需要转义时
  5. 5. 唯一不能直接写的字符:反引号本身

学会原始字符串,Go 代码书写体验直接起飞✨

相关文章

🌍 Go 字符串 Unicode & UTF-8 处理|rune 类型一次吃透
⚠️ Go 短变量声明 := 陷阱|90%新手都踩过!
🚨 Go 变量遮蔽|新手最容易踩的隐形坑!一篇避坑
🌍 Go 变量作用域全解|全局·局部·块作用域一次吃透
🔍 Go 空白标识符 _ 全攻略|忽略值·导包神器用法大全
🚀 Go main 函数详解|程序入口核心玩法全掌握

发布评论