Risposte:
In base alle specifiche del linguaggio è possibile utilizzare un valore letterale di stringa non elaborato, in cui la stringa è delimitata da backtick anziché da doppie virgolette.
`line 1
line 2
line 3`
line 1
sarà invisibile nel tuo editor ma presente nella stringa.
$(abcd)
).
Tu puoi scrivere:
"line 1" +
"line 2" +
"line 3"
che è lo stesso di:
"line 1line 2line3"
Diversamente dall'utilizzo di tick posteriori, conserverà i caratteri di escape. Si noti che "+" deve trovarsi sulla riga "iniziale", ovvero:
"line 1"
+"line 2"
genera un errore.
\n
ed è molto più semplice lavorare con stringhe dinamiche e simili. Se ho ragione, la risposta accettata è davvero per stringhe statiche nel codice per renderlo carino.
Dai letterali String :
\n
".Ma, se la tua stringa multilinea deve includere un backquote (`), dovrai usare una stringa interpretata letterale:
`line one
line two ` +
"`" + `line three
line four`
Non è possibile inserire direttamente un backquote (`) in un valore letterale stringa grezzo (` `xx \
).
Devi usare (come spiegato in " come mettere un backquote in una stringa backquoted? "):
+ "`" + ...
Usa valori letterali di stringa non elaborati per le stringhe multilinea:
func main(){
multiline := `line
by line
and line
after line`
}
I letterali di stringa grezzi sono sequenze di caratteri tra virgolette, come in
`foo`
. All'interno delle virgolette, può apparire qualsiasi personaggio tranne la virgoletta.
Una parte significativa è che il raw letterale non è solo multi-linea e essere multi-linea non è l'unico scopo di esso.
Il valore di una stringa non elaborata letterale è la stringa composta dai caratteri non interpretati (implicitamente codificati in UTF-8) tra le virgolette; in particolare, le barre rovesciate non hanno un significato speciale ...
Quindi le fughe non saranno interpretate e le nuove linee tra le zecche saranno vere nuove linee .
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)
}
Forse hai una linea lunga che vuoi spezzare e non hai bisogno di nuove linee. In questo caso è possibile utilizzare la concatenazione di stringhe.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Poiché "" viene interpretato, la stringa viene letteralmente interpretata come escape.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
Usando i segni di spunta posteriori puoi avere stringhe multilinea:
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)
}
Invece di utilizzare la virgoletta doppia (“) o i simboli di virgoletta singola ('), utilizzare invece i segni di spunta per definire l'inizio e la fine della stringa. È quindi possibile avvolgerlo attraverso le linee.
Se indentate la stringa, ricordate che lo spazio bianco verrà conteggiato.
Si prega di controllare il parco giochi e fare esperimenti con esso.
Devi fare molta attenzione alla formattazione e alla spaziatura tra le righe, tutto conta e qui c'è un esempio funzionante, provalo 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)
}
Per me questo è quello che uso se l'aggiunta \n
non è un problema.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
Altrimenti puoi usare il raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`