Respostas:
De acordo com a especificação da linguagem, você pode usar uma literal de cadeia de caracteres bruta, onde a cadeia de caracteres é delimitada por backticks em vez de aspas duplas.
`line 1
line 2
line 3`
line 1
dele ficará invisível no seu editor, mas presente na string.
$(abcd)
).
Você pode escrever:
"line 1" +
"line 2" +
"line 3"
que é o mesmo que:
"line 1line 2line3"
Ao contrário do uso de ticks anteriores, ele preservará os caracteres de escape. Observe que o "+" deve estar na linha 'principal', ou seja:
"line 1"
+"line 2"
gera um erro.
\n
e é muito mais fácil trabalhar com seqüências dinâmicas. Se eu estiver correto, a resposta aceita é realmente para cadeias estáticas no código para torná-la bonita.
Dos literais String :
\n
'.Mas, se sua string de várias linhas precisar incluir uma citação (`), será necessário usar uma literal de string interpretada:
`line one
line two ` +
"`" + `line three
line four`
Você não pode colocar diretamente uma nota de retorno (`) em uma literal de string bruta (` `xx \
).
Você precisa usar (como explicado em " como colocar uma cota retroativa em uma string com cota retroativa? "):
+ "`" + ...
Use literais de cadeia bruta para cadeias de linhas múltiplas:
func main(){
multiline := `line
by line
and line
after line`
}
Literais de cadeia bruta são sequências de caracteres entre aspas, como em
`foo`
. Dentro das aspas, qualquer caractere pode aparecer, exceto as aspas.
Uma parte significativa é que o literal bruto não é apenas multi-linhas e ser multi-linhas não é o único objetivo disso.
O valor de uma literal de sequência bruta é a sequência composta pelos caracteres não interpretados (implicitamente codificados em UTF-8) entre as aspas; em particular, as barras invertidas não têm significado especial ...
Portanto, escapes não serão interpretados e novas linhas entre os ticks serão novas linhas reais .
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)
}
Possivelmente você tem uma linha longa que deseja quebrar e não precisa de novas linhas. Nesse caso, você pode usar a concatenação de cadeias.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Como "" é interpretado, as fugas literais da sequência serão interpretadas.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
Usando back ticks, você pode ter cadeias de linhas múltiplas:
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)
}
Em vez de usar aspas duplas (“) ou símbolos de aspas simples ('), use marcações de retorno para definir o início e o fim da string. Você pode então envolvê-lo nas linhas.
Se você recuar a string, lembre-se de que o espaço em branco será contado.
Por favor, verifique o playground e faça experiências com ele.
Você precisa ter muito cuidado com a formatação e o espaçamento entre linhas, tudo conta e aqui está uma amostra de trabalho, tente 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 mim, é isso que eu uso se adicionar \n
não for um problema.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
Caso contrário, você pode usar o raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`