Go a-t-il quelque chose de similaire aux chaînes multilignes de Python:
"""line 1
line 2
line 3"""
Sinon, quelle est la méthode préférée pour écrire des chaînes couvrant plusieurs lignes?
Selon la spécification de langue , vous pouvez utiliser un littéral de chaîne brute, la chaîne étant délimitée par des guillemets au lieu de guillemets doubles.
`line 1
line 2
line 3`
Tu peux écrire:
"line 1" +
"line 2" +
"line 3"
qui est le même que:
"line 1line 2line3"
Contrairement aux tiques de retour, il préservera les caractères d'échappement. Notez que le "+" doit figurer sur la ligne "principale", à savoir:
"line 1"
+"line 2"
génère une erreur.
De littéraux de chaîne :
\n
'.Toutefois, si votre chaîne multiligne doit inclure une citation arrière (`), vous devrez utiliser un littéral de chaîne interprété:
`line one
line two ` +
"`" + `line three
line four`
Vous ne pouvez pas mettre directement un backquote (`) dans un littéral de chaîne brute (` `xx\
).
Vous devez utiliser (comme expliqué dans " comment mettre un backquote dans une chaîne entre guillemets? "):
+ "`" + ...
Utilisez des littéraux de chaîne bruts pour les chaînes multilignes:
func main(){
multiline := `line
by line
and line
after line`
}
Les littéraux de chaîne bruts sont des séquences de caractères entre guillemets, comme dans
`foo`
. Dans les citations, n'importe quel caractère peut apparaître sauf citation en arrière.
Une partie importante est que brut littéral ne se limite pas à plusieurs lignes et être multiligne n’est pas le seul objectif de celle-ci.
La valeur d'un littéral de chaîne brute est la chaîne composée des caractères non interprétés (codés implicitement en UTF-8) entre les guillemets; en particulier, les barres obliques inverses n'ont pas de signification particulière ...
Les échappées ne seront donc pas interprétées et les nouvelles lignes entre ticks seront de nouvelles lignes réelles.
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)
}
Vous avez peut-être une longue ligne que vous souhaitez interrompre et vous n'avez pas besoin de nouvelles lignes. Dans ce cas, vous pouvez utiliser la concaténation de chaînes.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Puisque "" est interprété, les échappements littéraux de chaîne seront interprétés.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
En utilisant les ticks arrière, vous pouvez avoir des chaînes multilignes:
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)
}
Au lieu d’utiliser les symboles de guillemets doubles (“) ou de guillemets simples (‘), utilisez plutôt des traits de retour pour définir le début et la fin de la chaîne. Vous pouvez ensuite l'enrouler sur plusieurs lignes.
Si vous indenter la chaîne cependant, rappelez-vous que l'espace blanc comptera.
S'il vous plaît vérifier le terrain de je et faire des expériences avec elle.
Vous pouvez mettre du contenu avec `` autour de lui, comme
var hi = `I am here,
hello,
`
Vous devez faire très attention au formatage et à l'espacement des lignes, tout compte et voici un exemple qui fonctionne. Essayez-le 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)
}
vous pouvez utiliser des littéraux bruts. Exemple
s:=`stack
overflow`
Pour moi, c’est ce que j’utilise si ajouter \n
ne pose pas de problème.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
Sinon, vous pouvez utiliser le raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`