golang的双引号和反引号
反引号(back quote)就是"`",就是键盘上和"~"一个键的那个。
他们的区别就是:
- 双引号的文本会被解析,比如转义字符等,而
- 反引号的文本不会被解析,叫raw literals。
举个例子来说:
package main
import "fmt"
func main() {
fmt.Printf("[%s]\n", "Hello\tWorld!")
fmt.Printf("[%s]\n", `Hello\tWorld!`)
}
上面程序运行结果就是:
[Hello World!]
[Hello\tWorld!]
双引号文本里面的\t
,被解析成一个tab键,所以输出的时候就转化成了tab键;而反引号文本的\t
并没有被解析成tab键,而是按照字面内容输出。
另外反引号文本可以包含换行符,而双引号文本则不能:
1 package main
2
3 import "fmt"
4
5 func main() {
6 fmt.Printf("[%s]\n", "Hello
7 World!")
8 fmt.Printf("[%s]\n", `Hello
9 World!`)
10 }
编译就出错:
./main.go:6:29: newline in string
./main.go:6:29: syntax error: unexpected newline, expecting comma or )
./main.go:7:9: newline in string
所以反引号最常用的两个场景是:
- 包含多行的大段文本
- regex的定义文本串
例如,re := regexp.MustCompile(`a(x*)b`)
网友评论