回答:
言語仕様によると、文字列は二重引用符の代わりにバッククォートで区切られた生の文字列リテラルを使用できます。
`line 1
line 2
line 3`
line 1
エディターの後に表示されないが、文字列には存在する場合、スペースを置くと
$(abcd)
。
あなたは書ける:
"line 1" +
"line 2" +
"line 3"
これは次と同じです:
"line 1line 2line3"
バックティックの使用とは異なり、エスケープ文字は保持されます。「+」は「先頭」行にある必要があることに注意してください。
"line 1"
+"line 2"
エラーが発生します。
\n
、動的文字列などを扱うのがはるかに簡単になります。私が正しければ、受け入れられた答えは実際にはコード内の静的文字列がきれいに見えるようにすることです。
文字列リテラルから:
\n
'のようなエスケープ文字を解釈します。ただし、複数行の文字列に逆引用符( `)を含める必要がある場合は、解釈された文字列リテラルを使用する必要があります。
`line one
line two ` +
"`" + `line three
line four`
生の文字列リテラル( `` xx \
)に直接バッククォート( `)を入れることはできません。
使用する必要があります(「バッククォートされた文字列にバッククォートを配置する方法」で説明されているように):
+ "`" + ...
複数行の文字列には生の文字列リテラルを使用します。
func main(){
multiline := `line
by line
and line
after line`
}
生の文字列リテラルは、のように、逆引用符で囲まれた文字シーケンス
`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)
}
おそらく、改行したい長い行があり、新しい行は必要ありません。この場合、文字列の連結を使用できます。
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
""が解釈されるため、文字列リテラルエスケープが解釈されます。
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
バックティックを使用すると、複数行の文字列を使用できます。
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)
}
二重引用符(“)または一重引用符( ')を使用する代わりに、バックティックを使用して文字列の開始と終了を定義します。その後、それを行全体でラップできます。
ただし、文字列をインデントする場合は、空白がカウントされることに注意してください。
遊び場をチェックして実験してみてください。
goのフォーマットと行間隔には細心の注意を払う必要があります。すべてが重要です。ここに実際のサンプルがあります。試してみてください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)
}
私にとっては、追加\n
が問題にならない場合に使用します。
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
それ以外の場合は、 raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`