para name keywords etiquetas ejemplos go

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 }