go - name - meta tags para seo
¿Cómo se escriben cadenas multilínea en Go? (8)
Go tiene algo similar a las cuerdas multilínea de python:
"""line 1
line 2
line 3"""
Si no, ¿cuál es la forma preferida de escribir cadenas que abarcan varias líneas?
Ir y cuerdas multilínea.
Usando garrapatas hacia atrás puede tener cadenas multilínea:
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)
}
En lugar de usar la comilla doble (“) o los símbolos de comilla simple (''), en lugar de eso, use comillas repetidas para definir el inicio y el final de la cadena. A continuación, puede envolverlo a través de líneas.
Sin embargo, si sangra la cadena, recuerde que el espacio en blanco contará.
Por favor, compruebe el terreno de juego y haga experimentos con él.
De acuerdo con la especificación del lenguaje , puede usar un literal de cadena sin formato, donde la cadena está delimitada por comillas en lugar de comillas dobles.
`line 1
line 2
line 3`
De los literales de cuerda :
- el literal de cadena sin formato admite multilínea (pero los caracteres de escape no se interpretan)
- literal de la cadena interpretada interpreta los caracteres escapados, como ''
/n
''.
Pero, si su cadena multilínea tiene que incluir una cita posterior (`), entonces tendrá que usar un literal de cadena interpretado:
`line one
line two ` +
"`" + `line three
line four`
No puede poner directamente un backquote (`) en un literal de cadena sin formato (` `xx /
).
Tienes que usar (como se explica en " cómo poner una cita atrás en una cadena entre comillas? "):
+ "`" + ...
Debe tener mucho cuidado con el formateo y el interlineado, todo vale y aquí hay una muestra de trabajo, pruébelo 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)
}
Puedes escribir:
"line 1" +
"line 2" +
"line 3"
que es lo mismo que
"line 1line 2line3"
A diferencia del uso de garrapatas, conservará los caracteres de escape. Tenga en cuenta que el "+" debe estar en la línea ''líder'', es decir:
"line 1"
+"line 2"
genera un error.
Puedes poner contenido con `` a su alrededor, como
var hi = `I am here,
hello,
`
Puedes usar literales crudos. Ejemplo
s:=`stack
overflow`
Utilice literales de cadena en bruto para cadenas de varias líneas:
func main(){
multiline := `line
by line
and line
after line`
}
Literales de cuerda cruda
Los literales de cadena sin formato son secuencias de caracteres entre comillas anteriores, como en
foo
. Dentro de las comillas, cualquier carácter puede aparecer excepto la comilla atrás.
Una parte importante es que es literal en bruto no solo multilínea y ser multilínea no es el único propósito de ello.
El valor de un literal de cadena sin formato es la cadena compuesta por los caracteres no interpretados (implícitamente codificados en UTF-8) entre las comillas; en particular, las barras invertidas no tienen un significado especial ...
Por lo tanto, los escapes no se interpretarán y las nuevas líneas entre marcas serán líneas realmente nuevas .
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)
}
Concatenación
Posiblemente tenga una línea larga que quiera romper y no necesite líneas nuevas. En este caso podrías usar concatenación de cuerdas.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Como "" se interpreta la cadena, se interpretarán los escapes literales.
func main(){
multiline := "line " +
"by line /n" +
"and line /n" +
"after line"
fmt.Print(multiline) // New lines as interpreted /n
}