Respuestas:
De acuerdo con la especificación del lenguaje , puede usar un literal de cadena sin procesar, donde la cadena está delimitada por comillas en lugar de comillas dobles.
`line 1
line 2
line 3`
line 1
, será invisible en su editor pero estará presente en la cadena.
$(abcd)
).
Puedes escribir:
"line 1" +
"line 2" +
"line 3"
que es lo mismo que:
"line 1line 2line3"
A diferencia del uso de ticks posteriores, conservará los caracteres de escape. Tenga en cuenta que el "+" debe estar en la línea 'principal', es decir:
"line 1"
+"line 2"
genera un error
\n
y es mucho más fácil trabajar con cadenas dinámicas y demás. Si estoy en lo correcto, la respuesta aceptada realmente es para cadenas estáticas en el código para que se vea bonita.
De literales de cadena :
\n
'.Pero, si su cadena de varias líneas debe incluir una comilla invertida (`), entonces deberá usar un literal de cadena interpretado:
`line one
line two ` +
"`" + `line three
line four`
No puede poner directamente una comilla invertida (`) en un literal de cadena sin formato (` `xx \
). Debe
usar (como se explica en " ¿cómo poner una comilla invertida en una cadena con comillas invertidas? "):
+ "`" + ...
Use literales de cadena sin procesar para cadenas de varias líneas:
func main(){
multiline := `line
by line
and line
after line`
}
Los literales de cadena sin formato son secuencias de caracteres entre comillas inversas, como en
`foo`
. Dentro de las comillas, puede aparecer cualquier carácter excepto la comilla inversa.
Una parte importante es que es prima literal no sólo multi-línea y para ser de varias líneas no es el único objetivo de la misma.
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 ticks 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)
}
Posiblemente tiene una línea larga que desea romper y no necesita líneas nuevas. En este caso, podría usar la concatenación de cadenas.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Dado que "" se interpreta, se interpretarán los escapes literales de cadena.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
Usando ticks posteriores 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 utilizar la comilla doble (") o los símbolos de comilla simple ('), utilice las marcas de retroceso para definir el inicio y el final de la cadena. Luego puede envolverlo en líneas.
Sin embargo, si sangra la cadena, recuerda que el espacio en blanco contará.
Por favor revise el patio de recreo y haga experimentos con él.
Debe tener mucho cuidado con el formateo y el espaciado entre líneas, todo cuenta 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)
}
Para mí esto es lo que uso si agregar \n
no es un problema.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
De lo contrario, puede usar el raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`