aet*_*ter 564 string multiline go
Go是否有类似于python的多行字符串:
"""line 1
line 2
line 3"""
Run Code Online (Sandbox Code Playgroud)
如果没有,编写跨越多行的字符串的首选方法是什么?
Mar*_*ers 910
根据语言规范,您可以使用原始字符串文字,其中字符串由反引号而不是双引号分隔.
`line 1
line 2
line 3`
Run Code Online (Sandbox Code Playgroud)
小智 101
你可以写:
"line 1" +
"line 2" +
"line 3"
Run Code Online (Sandbox Code Playgroud)
这与:
"line 1line 2line3"
Run Code Online (Sandbox Code Playgroud)
与使用后退标记不同,它将保留转义字符.请注意,"+"必须位于"前导"行,即:
"line 1"
+"line 2"
Run Code Online (Sandbox Code Playgroud)
生成错误.
Von*_*onC 36
来自字符串文字:
\n'.但是,如果你的多行字符串必须包含一个反引号(`),那么你将不得不使用一个解释的字符串文字:
`line one
line two ` +
"`" + `line three
line four`
Run Code Online (Sandbox Code Playgroud)
你不能直接将反引号(`)放在原始字符串文字(``xx \)中.
你必须使用(如" 如何在反引号字符串中放置反引号? "中所述):
+ "`" + ...
Run Code Online (Sandbox Code Playgroud)
I15*_*159 24
将原始字符串文字用于多行字符串:
func main(){
multiline := `line
by line
and line
after line`
}
Run Code Online (Sandbox Code Playgroud)
原始字符串文字是后引号之间的字符序列,如
`foo`.在引号内,除反向引号外,任何字符都可能出现.
一个重要的部分是原始文字不仅仅是多行而且多行并不是它的唯一目的.
原始字符串文字的值是由引号之间的未解释(隐式UTF-8编码)字符组成的字符串; 特别是反斜杠没有特别的意义......
因此,不会解释转义,并且刻度之间的新行将是真正的新行.
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)
}
Run Code Online (Sandbox Code Playgroud)
可能你想要打破你的长行,你不需要新行.在这种情况下,您可以使用字符串连接.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Run Code Online (Sandbox Code Playgroud)
由于""被解释,因此将解释字符串文字转义.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
Run Code Online (Sandbox Code Playgroud)
小智 9
在 Go 中创建多行字符串实际上非常简单。声明或分配字符串值时只需使用反引号 (`) 字符即可。
package main
import (
"fmt"
)
func main() {
// String in multiple lines
str := `This is a
multiline
string.`
fmt.Println(str + "\n")
// String in multiple lines with tab
tabs := `This string
will have
tabs in it`
fmt.Println(tabs)
}
Run Code Online (Sandbox Code Playgroud)
使用后退标记,您可以使用多行字符串:
package main
import "fmt"
func main() {
message := `This is a
Multi-line Text String
Because it uses the raw-string back ticks
instead of quotes.
`
fmt.Printf("%s", message)
}
Run Code Online (Sandbox Code Playgroud)
而不是使用双引号(")或单引号符号('),而是使用反向标记来定义字符串的开头和结尾.然后,您可以跨行包装它.
如果你缩进字符串,请记住空白区域将被计算.
请检查操场并进行实验.
| 归档时间: |
|
| 查看次数: |
220883 次 |
| 最近记录: |