简要说明一下Golang 单引号,双引号,反引号的区别?
参考回答
在 Golang 中,单引号 (')、双引号 (")、反引号 (`) 用于表示不同类型的字面值,具体区别如下:
- 单引号 (
'):- 用于表示单个字符(
rune类型)。 - 实际上是表示一个 Unicode 码点,占用 4 个字节。
示例:
var c rune = 'A' // 表示字符 A 的 Unicode 码点 fmt.Println(c) // 输出: 65 (ASCII 值) - 用于表示单个字符(
- 双引号 (
"):- 用于表示字符串(
string类型)。 - 支持转义字符,如
\n表示换行,\"表示双引号。
示例:
var s string = "Hello\nWorld" fmt.Println(s) // 输出: // Hello // World - 用于表示字符串(
- 反引号 (
`):- 用于表示 原始字符串(
string类型)。 - 不支持转义字符,内容按字面值存储,包括换行和特殊字符。
示例:
var raw string = `Hello\nWorld` fmt.Println(raw) // 输出: // Hello\nWorld - 用于表示 原始字符串(
详细讲解与拓展
1. 单引号:'
- 本质: 表示
rune类型(等价于一个 32 位的整数)。 - 单引号中的内容必须是单个字符:
var c1 rune = 'A' // 正确 var c2 rune = '😀' // 正确 var c3 rune = 'AB' // 错误,只能有一个字符 - 可以通过单引号获取字符的 Unicode 值(码点):
fmt.Printf("%c -> %U\n", 'A', 'A') // 输出: A -> U+0041
2. 双引号:"
- 本质: 表示字符串(
string类型)。 - 支持转义字符,例如:
var s string = "Line1\nLine2" fmt.Println(s) // 输出: // Line1 // Line2 - 双引号可以用来包含 Unicode 字符:
s := "Hello, 世界" fmt.Println(s) // 输出: Hello, 世界
3. 反引号:`
- 本质: 表示原始字符串(
string类型)。 - 所见即所得,支持多行,常用于写入代码片段、HTML 等内容。
raw := `Hello World` fmt.Println(raw) // 输出: // Hello // World - 不支持转义字符:
raw := `Hello\nWorld` fmt.Println(raw) // 输出: // Hello\nWorld - 常见用途:
- 表示文件路径:
path := `C:\Users\Gopher` fmt.Println(path) // 输出: C:\Users\Gopher- 嵌入 HTML、SQL 等代码片段:
sql := `SELECT * FROM users WHERE name="John"` fmt.Println(sql)
总结
- 单引号 (
'):- 表示单个字符,类型是
rune(4 字节 Unicode 码点)。
- 表示单个字符,类型是
- 双引号 (
"):- 表示字符串,类型是
string。 - 支持转义字符,常用于一般字符串操作。
- 表示字符串,类型是
- 反引号 (
`):- 表示原始字符串,类型也是
string。 - 所见即所得,支持多行和直接包含特殊字符。
- 表示原始字符串,类型也是