如何在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) }