golang的双引号文本和反引号文本

2020-03-19  本文已影响0人  CodingCode

golang的双引号和反引号

反引号(back quote)就是"`",就是键盘上和"~"一个键的那个。

他们的区别就是:

  1. 双引号的文本会被解析,比如转义字符等,而
  2. 反引号的文本不会被解析,叫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

所以反引号最常用的两个场景是:

  1. 包含多行的大段文本
  2. regex的定义文本串
    例如,re := regexp.MustCompile(`a(x*)b`)
上一篇 下一篇

猜你喜欢

热点阅读