Apakah Go memiliki sesuatu yang mirip dengan string multiline Python:
"""line 1
line 2
line 3"""
Jika tidak, apa cara penulisan string yang disukai yang mencakup banyak baris?
Apakah Go memiliki sesuatu yang mirip dengan string multiline Python:
"""line 1
line 2
line 3"""
Jika tidak, apa cara penulisan string yang disukai yang mencakup banyak baris?
Jawaban:
Menurut spesifikasi bahasa, Anda dapat menggunakan string string literal, di mana string dibatasi oleh backticks bukan tanda kutip ganda.
`line 1
line 2
line 3`
line 1
itu tidak akan terlihat di editor Anda tetapi ada dalam string.
$(abcd)
).
Kamu bisa menulis:
"line 1" +
"line 2" +
"line 3"
yang sama dengan:
"line 1line 2line3"
Tidak seperti menggunakan kutu kembali, itu akan mempertahankan karakter melarikan diri. Perhatikan bahwa "+" harus berada di baris 'terkemuka' yaitu:
"line 1"
+"line 2"
menghasilkan kesalahan.
\n
dan jauh lebih mudah untuk digunakan dengan string dinamis dan semacamnya. Jika saya benar, jawaban yang diterima benar-benar untuk string statis dalam kode agar terlihat cantik.
Dari String literals :
\n
'.Tetapi, jika string multi-line Anda harus menyertakan backquote (`), maka Anda harus menggunakan string literal yang diartikan:
`line one
line two ` +
"`" + `line three
line four`
Anda tidak bisa secara langsung memasukkan tanda kutip mundur (`) dalam string string literal (` `xx \
).
Anda harus menggunakan (seperti yang dijelaskan dalam " cara menempatkan backquote dalam string backquoted? "):
+ "`" + ...
Gunakan literal string mentah untuk string multi-baris:
func main(){
multiline := `line
by line
and line
after line`
}
Literal string mentah adalah urutan karakter antara kutipan belakang, seperti pada
`foo`
. Dalam tanda kutip, setiap karakter dapat muncul kecuali kutipan kembali.
Bagian penting adalah bahwa literal mentah bukan hanya multi-line dan menjadi multi-line bukan satu-satunya tujuan dari itu.
Nilai dari string string literal adalah string yang terdiri dari karakter yang tidak diinterpretasi (tersirat UTF-8) antara kutipan; khususnya, garis miring terbalik tidak memiliki arti khusus ...
Jadi lolos tidak akan ditafsirkan dan baris baru antara kutu akan menjadi baris baru yang nyata .
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)
}
Mungkin Anda memiliki garis panjang yang ingin Anda hancurkan dan Anda tidak perlu garis baru di dalamnya. Dalam hal ini Anda bisa menggunakan penggabungan string.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
Karena "" ditafsirkan string, literal escape akan diinterpretasikan.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
Menggunakan kutu belakang Anda dapat memiliki string multiline:
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)
}
Alih-alih menggunakan tanda kutip ganda (“) atau simbol tanda kutip tunggal ('), alih-alih gunakan tanda centang kembali untuk menentukan awal dan akhir string. Anda kemudian dapat membungkusnya melintasi garis.
Jika Anda memasukkan indentasi string, ingat bahwa spasi putih akan dihitung.
Silakan periksa taman bermain dan lakukan percobaan dengannya.
Anda harus sangat berhati-hati dalam memformat dan mengatur spasi baris, semuanya penting dan ini adalah contoh yang berfungsi, cobalah 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)
}
Bagi saya ini yang saya gunakan jika menambahkan \n
bukan masalah.
fmt.Sprintf("Hello World\nHow are you doing today\nHope all is well with your go\nAnd code")
Anda bisa menggunakan raw string
multiline := `Hello Brothers and sisters of the Code
The grail needs us.
`