如何在Go中编写多行string?

Go有没有类似于python的多行string:

"""line 1 line 2 line 3""" 

如果不是,跨越多行编写string的首选方式是什么?

根据语言规范,您可以使用原始string文字,其中string由反引号而不是双引号分隔。

 `line 1 line 2 line 3` 

你可以写 :

 "line 1" + "line 2" + "line 3" 

这是一样的

 "line 1line 2line3" 

与使用反引号不同,它将保留转义字符。 请注意,“+”必须在“主导”线上,即

 "line 1" +"line 2" 

产生一个错误

从string文字 :

  • 原始string文字支持多行(但转义字符不解释)
  • 解释string字面解释转义字符,如' \n '。

但是,如果您的多行string必须包含反引号(`),那么您将不得不使用解释的string文字:

 `line one line two ` + "`" + `line three line four` 

你不能直接在原始string文字(“xx \ )中加一个反引号(`)。
你必须使用(正如在“ 如何把反引号放在反引号string中 ”所解释的):

  + "`" + ... 

对多行string使用原始string文字:

 func main(){ multiline := `line by line and line after line` } 

原始string文字

原始string文字是反引号之间的字符序列,如在foo 。 在引号内,除了反引号外,任何字符都可以出现。

一个重要的部分是, 原始文字不只是多线,而是多线并不是它的唯一目的。

原始string文本的值是由引号之间的未解释(隐式UTF-8编码)字符组成的string; 特别是反斜杠没有特别的含义…

所以逃脱不会被解释, 蜱之间的新线将成为真正的新线

 func main(){ multiline := `line by line \n and line \n after line` // \n will be just printed. // But new lines are there too. fmt.Print(multiline) } 

级联

可能你有很长的路线,你想打破,你不需要新的线路。 比你可以使用string连接。

 func main(){ multiline := "line " + "by line " + "and line " + "after line" fmt.Print(multiline) // No new lines here } 

由于“”是解释string文字转义将被解释。

 func main(){ multiline := "line " + "by line \n" + "and line \n" + "after line" fmt.Print(multiline) // New lines as interpreted \n } 

你可以把内容放在它周围,就像

 var hi = `I am here, hello, ` 

你必须非常小心格式和行间距,一切都很重要,这里是一个工作示例,试试https://play.golang.org/p/c0zeXKYlmF

 package main import "fmt" func main() { testLine := `This is a test line 1 This is a test line 2` fmt.Println(testLine) }