Golang中`符号是什么意思?

Golang中符号是什么意思? “” 是什么?我重复一下这个字符 `` 我在书中看到作者声明变量时使用它。 谢谢

2 回复

引自 Go 编程语言规范

原始字符串字面量是反引号之间的字符序列,例如 foo。在引号内,除了反引号外,任何字符都可以出现。原始字符串字面量的值是由引号之间未经解释(隐式 UTF-8 编码)的字符组成的字符串;特别是,反斜杠没有特殊含义,并且字符串可以包含换行符。原始字符串字面量内部的回车符(’\r’)会从原始字符串值中丢弃。

更多关于Golang中`符号是什么意思?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中,反引号(`)用于创建原始字符串字面量(raw string literal)。与双引号字符串不同,反引号字符串中的内容会完全按照书写形式处理,包括换行符和特殊字符,且不支持转义序列。

主要特点:

  1. 保留所有字符原样(包括换行和制表符)
  2. 不支持转义序列(如 \n\t 会直接显示为字符)
  3. 常用于多行字符串或正则表达式等场景

示例代码:

package main

import "fmt"

func main() {
    // 使用反引号声明多行字符串
    str := `这是一个
多行字符串
示例:\n 不会被转义为换行符`
    fmt.Println(str)

    // 对比双引号字符串
    doubleQuoteStr := "这是一个\n双引号字符串示例:\\n 会被转义"
    fmt.Println(doubleQuoteStr)

    // 常见用例:JSON字符串
    jsonStr := `{
        "name": "张三",
        "age": 30
    }`
    fmt.Println(jsonStr)

    // 常见用例:正则表达式(避免频繁转义)
    regex := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
    fmt.Println(regex)
}

输出结果:

这是一个
多行字符串
示例:\n 不会被转义为换行符
这是一个
双引号字符串示例:\n 会被转义
{
    "name": "张三",
    "age": 30
}
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

注意事项:

  • 反引号字符串中不能包含反引号字符本身
  • 如果需要包含反引号,必须使用双引号字符串并转义
  • 在变量声明中看到反引号时,通常表示该变量被赋予一个多行或需要保持原样的字符串值
// 错误示例:反引号内包含反引号
// invalid := `这里有一个反引号:` // 编译错误

// 正确做法:使用双引号
valid := "这里有一个反引号:`"
回到顶部