Does Go มีอะไรที่คล้ายกับสตริงหลายบรรทัดของ Python:
"""line 1
line 2
line 3"""
หากไม่เป็นเช่นนั้นวิธีที่ดีที่สุดในการเขียนสตริงคือการขยายหลายบรรทัด
Does Go มีอะไรที่คล้ายกับสตริงหลายบรรทัดของ Python:
"""line 1
line 2
line 3"""
หากไม่เป็นเช่นนั้นวิธีที่ดีที่สุดในการเขียนสตริงคือการขยายหลายบรรทัด
คำตอบ:
ตามข้อกำหนดภาษาคุณสามารถใช้ตัวอักษรสตริงดิบซึ่งสตริงจะคั่นด้วย backticks แทนเครื่องหมายคำพูดคู่
`line 1
line 2
line 3`
line 1
นั้นจะมองไม่เห็นในเครื่องมือแก้ไขของคุณ แต่มีอยู่ในสตริง
$(abcd)
)
คุณสามารถเขียน:
"line 1" +
"line 2" +
"line 3"
ซึ่งเหมือนกับ:
"line 1line 2line3"
ต่างจากการใช้เครื่องหมายขีดหลังมันจะรักษาอักขระเลี่ยง โปรดทราบว่า "+" จะต้องอยู่ในบรรทัด 'นำ' เช่น:
"line 1"
+"line 2"
สร้างข้อผิดพลาด
\n
และง่ายต่อการทำงานกับสตริงแบบไดนามิกและเช่น ถ้าฉันถูกต้องคำตอบที่ได้รับการยอมรับนั้นมีไว้สำหรับสตริงคงที่ในโค้ดเพื่อให้ดูสวย
จากตัวอักษรสตริง :
\n
'แต่ถ้าสตริงหลายบรรทัดของคุณต้องมี backquote (`) คุณจะต้องใช้สตริงที่ตีความแล้ว:
`line one
line two ` +
"`" + `line three
line four`
คุณไม่สามารถใส่ backquote (`) ลงในสตริงสตริงตามตัวอักษร (` `xx \
) ได้โดยตรง
คุณต้องใช้ (ดังอธิบายใน " วิธีใส่ backquote ในสตริง backquote? "):
+ "`" + ...
ใช้ตัวอักษรสตริงดิบสำหรับสตริงหลายบรรทัด:
func main(){
multiline := `line
by line
and line
after line`
}
`foo`
วัตถุดิบอักษรสตริงที่มีลำดับตัวอักษรระหว่างคำพูดกลับมาเช่นเดียวกับใน ภายในเครื่องหมายคำพูดอักขระใด ๆ อาจปรากฏขึ้นยกเว้นเครื่องหมายคำพูดด้านหลัง
ส่วนที่สำคัญคือตัวอักษรดิบไม่ใช่แค่หลายบรรทัดและเป็นหลายบรรทัดไม่ใช่จุดประสงค์เดียวของมัน
ค่าของสตริงตัวอักษรดิบคือสตริงที่ประกอบด้วยอักขระที่ไม่ถูกตีความ (โดยนัย UTF-8-encoded) อักขระระหว่างเครื่องหมายคำพูด; โดยเฉพาะแบ็กสแลชไม่มีความหมายพิเศษ ...
ดังนั้นหนีจะไม่ถูกตีความและสายใหม่ระหว่างเห็บจะสายใหม่จริง
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)
}
แทนที่จะใช้เครื่องหมายคำพูดคู่ (“) หรือเครื่องหมายคำพูดเดี่ยว (') แทนที่จะใช้เครื่องหมายขีดหลังเพื่อกำหนดจุดเริ่มต้นและจุดสิ้นสุดของสตริง จากนั้นคุณสามารถพันทับเส้น
หากคุณเยื้องสตริงโปรดจำไว้ว่าช่องว่างจะนับ
โปรดตรวจสอบสนามเด็กเล่นและทำการทดลองกับมัน
คุณสามารถใส่เนื้อหาที่มี `` ล้อมรอบไว้ได้เช่น
var hi = `I am here,
hello,
`
คุณต้องระมัดระวังในการจัดรูปแบบและระยะห่างระหว่างบรรทัดทุกอย่างมีค่าและนี่คือตัวอย่างการทำงานลองใช้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)
}
คุณสามารถใช้ตัวอักษรดิบ ตัวอย่าง
s:=`stack
overflow`
สำหรับฉันนี่คือสิ่งที่ฉันใช้หากการเพิ่ม\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.
`