Відповіді:
Відповідно до мовної специфікації, ви можете використовувати необроблений літеральний рядок, де рядок розміщений зворотними посиланнями замість подвійних лапок.
`line 1
line 2
line 3`
line 1
того, як він буде невидимий у вашому редакторі, але присутній у рядку.
$(abcd)
).
Ви можете написати:
"line 1" +
"line 2" +
"line 3"
що те саме, що:
"line 1line 2line3"
На відміну від використання зворотних кліщів, він збереже символи втечі. Зауважте, що "+" має бути у "ведучому" рядку, тобто:
"line 1"
+"line 2"
генерує помилку.
\n
та набагато простіше працювати з динамічними рядками та ін. Якщо я маю рацію, прийнята відповідь дійсно полягає у статичних рядках у коді, щоб вони виглядали красиво.
\n
'.Але, якщо ваш багаторядковий рядок повинен містити зворотне котирування (`), тоді вам доведеться використовувати інтерпретований літеральний рядок:
`line one
line two ` +
"`" + `line three
line four`
Ви не можете безпосередньо поставити backquote (`) в необроблений рядковий літерал (` `xx \
).
Вам потрібно скористатися (як пояснено в " як поставити зворотну котировку в рядок, що котирується? "):
+ "`" + ...
Використовуйте необроблені рядкові літерали для багаторядкових рядків:
func main(){
multiline := `line
by line
and line
after line`
}
Сирові рядкові літерали - це послідовності символів між зворотними цитатами, як у
`foo`
. У межах лапок може з’являтися будь-який символ, крім зворотної.
Значна частина полягає в тому, що сира буквальна не просто багаторядкова і бути багаторядковою - не єдина мета цього.
Значення необробленого рядкового літералу - це рядок, що складається з не інтерпретованих символів (неявно кодованих UTF-8) між лапками; зокрема, косоокість не має особливого значення ...
Тож втечі не трактуватимуться, а нові лінії між кліщами стануть справді новими лініями .
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)
}
Можливо, у вас довгий рядок, який ви хочете перервати, і вам не потрібні нові рядки в ньому. У цьому випадку ви можете використовувати конкатенацію рядків.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Оскільки "" інтерпретується рядок, то прямолінійні виклики будуть інтерпретовані.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
За допомогою зворотних кліщів ви можете мати багаторядкові рядки:
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)
}
Замість використання символів подвійної лапки (") або одинарної цитати ("), замість цього використовуйте зворотні клітинки, щоб визначити початок і кінець рядка. Потім можна обернути його поперек ліній.
Якщо ви відступаєте рядок, пам’ятайте, що пробіл буде рахуватися.
Перевірте майданчик і зробіть експерименти з ним.
Ви повинні бути дуже обережними у форматуванні та міжрядковому інтервалі в ході, все враховується, і ось робочий зразок, спробуйте 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)
}
Для мене це те, що я використовую, якщо додавання \n
не є проблемою.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
Ще ви можете використовувати raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`