Hat Go etwas Ähnliches wie Pythons mehrzeilige Zeichenketten:
"""line 1
line 2
line 3"""
Wenn nicht, was ist die bevorzugte Art, Zeichenketten zu schreiben, die sich über mehrere Zeilen erstrecken?
Hat Go etwas Ähnliches wie Pythons mehrzeilige Zeichenketten:
"""line 1
line 2
line 3"""
Wenn nicht, was ist die bevorzugte Art, Zeichenketten zu schreiben, die sich über mehrere Zeilen erstrecken?
によると Sprachspezifikation können Sie ein rohes Zeichenfolgenliteral verwenden, bei dem die Zeichenfolge durch Backticks anstelle von doppelten Anführungszeichen abgegrenzt ist.
`line 1
line 2
line 3`
Sie können schreiben:
"line 1" +
"line 2" +
"line 3"
was dasselbe ist wie:
"line 1line 2line 3"
Anders als bei der Verwendung von Backticks bleiben dabei Escape-Zeichen erhalten. Beachten Sie, dass das "+" in der "führenden" Zeile stehen muss - das folgende Beispiel wird einen Fehler erzeugen:
"line 1"
+"line 2"
Verwenden Sie rohe String-Literale für mehrzeilige Strings:
func main(){
multiline := `line
by line
and line
after line`
}
Rohe String-Literale sind Zeichenfolgen zwischen Anführungszeichen, wie in
`foo`
. Innerhalb der Anführungszeichen kann jedes beliebige Zeichen stehen, mit Ausnahme der Anführungszeichen.
Ein wichtiger Teil ist, dass die roh buchstäblich nicht nur mehrzeilig und mehrzeilig zu sein ist nicht ihr einziger Zweck.
Der Wert eines Raw-String-Literal ist die Zeichenkette, die aus den uninterpretierten (implizit UTF-8-kodierten) Zeichen zwischen den Anführungszeichen besteht; insbesondere haben Backslashes keine besondere Bedeutung...
Escapes werden also nicht interpretiert und neue Linien zwischen den Zecken werden echte neue Linien sein .
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)
}
Möglicherweise haben Sie eine lange Zeile, die Sie unterbrechen wollen, und Sie brauchen keine neuen Zeilen darin. In diesem Fall können Sie die String-Verkettung verwenden.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Da " " als Zeichenkettenliteral interpretiert wird, werden auch Escapes interpretiert.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
から String-Literale :
\n
'.Wenn Ihre mehrzeilige Zeichenkette jedoch ein Anführungszeichen (`) enthalten muss, dann müssen Sie ein interpretiertes Zeichenfolgenliteral verwenden:
`line one
line two ` +
"`" + `line three
line four`
Sie können ein Backquote (`) nicht direkt in ein rohes String-Literal (``xx \
).
Sie müssen (wie in " Wie setzt man ein Anführungszeichen in eine in Anführungszeichen gesetzte Zeichenfolge? "):
+ "`" + ...
Mit Back Ticks können Sie mehrzeilige Zeichenketten erstellen:
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)
}
Anstatt doppelte Anführungszeichen (") oder einfache Anführungszeichen (') zu verwenden, sollten Sie stattdessen Back-Ticks verwenden, um den Anfang und das Ende der Zeichenkette zu definieren. Sie können sie dann über Zeilen hinweg umbrechen.
Wenn Sie die Zeichenkette jedoch einrücken, denken Sie daran, dass das Leerzeichen zählt.
Bitte prüfen Sie die Spielplatz und Experimente damit machen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.