ฉันต้องการดูค่าที่อยู่ในชิ้นส่วน ฉันจะพิมพ์ได้อย่างไร?
projects []Project
ฉันต้องการดูค่าที่อยู่ในชิ้นส่วน ฉันจะพิมพ์ได้อย่างไร?
projects []Project
คำตอบ:
คุณสามารถลอง%v
, %+v
หรือ%#v
คำกริยาของfmt ไป :
fmt.Printf("%v", projects)
หากอาร์เรย์ของคุณ (หรือที่นี่ slice ) มีstruct
(like Project
) คุณจะเห็นรายละเอียด
เพื่อความแม่นยำยิ่งขึ้นคุณสามารถใช้%#v
พิมพ์วัตถุโดยใช้ Go-syntax สำหรับลิเทอรัล:
%v the value in a default format.
when printing structs, the plus flag (%+v) adds field names
%#v a Go-syntax representation of the value
สำหรับประเภทพื้นฐานfmt.Println(projects)
ก็เพียงพอแล้ว
หมายเหตุ: สำหรับส่วนของพอยน์เตอร์นั่นคือ[]*Project
(แทน[]Project
) คุณควรกำหนดString()
วิธีการเพื่อให้แสดงสิ่งที่คุณต้องการเห็นได้ชัดเจน (หรือคุณจะเห็นเฉพาะที่อยู่ของตัวชี้)
ดูตัวอย่าง play.golangนี้
สำหรับ a []string
คุณสามารถใช้strings.Join()
:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
// output: foo, bar, baz
หากคุณต้องการดูค่าของอาร์เรย์โดยไม่มีวงเล็บคุณสามารถใช้การรวมกันของfmt.Sprint()
และstrings.Trim()
a := []string{"a", "b"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]"))
fmt.Print(a)
ผลตอบแทน:
a b
[a b]
โปรดทราบว่าด้วยวิธีนี้วงเล็บนำหน้าจะสูญหายไปจากค่าแรกและวงเล็บต่อท้ายจะสูญหายไปจากค่าสุดท้าย
a := []string{"[a]", "[b]"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]")
fmt.Print(a)
ผลตอบแทน:
a] [b
[[a] [b]]
สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารสำหรับstrings.Trim ()
fmt.Printf()
เป็นเรื่องปกติ แต่บางครั้งฉันก็ชอบใช้แพ็คเกจการพิมพ์ที่สวยงาม
import "github.com/kr/pretty"
pretty.Print(...)
หากคุณต้องการดูข้อมูลในรูปแบบเดียวกันกับที่คุณใช้พิมพ์ (บางอย่างเช่น["one", "two", "three"]
) นี่คือตัวอย่างโค้ดที่แสดงวิธีการดำเนินการ:
package main
import (
"fmt"
"strings"
)
func main() {
test := []string{"one", "two", "three"} // The slice of data
semiformat := fmt.Sprintf("%q\n", test) // Turn the slice into a string that looks like ["one" "two" "three"]
tokens := strings.Split(semiformat, " ") // Split this string by spaces
fmt.Printf(strings.Join(tokens, ", ")) // Join the Slice together (that was split by spaces) with commas
}
ฉันเขียนแพ็คเกจชื่อ Pretty Slice คุณสามารถใช้เพื่อแสดงภาพชิ้นส่วนและอาร์เรย์สำรองของพวกเขาเป็นต้น
package main
import pretty "github.com/inancgumus/prettyslice"
func main() {
nums := []int{1, 9, 5, 6, 4, 8}
odds := nums[:3]
evens := nums[3:]
nums[1], nums[3] = 9, 6
pretty.Show("nums", nums)
pretty.Show("odds : nums[:3]", odds)
pretty.Show("evens: nums[3:]", evens)
}
รหัสนี้จะผลิตและส่งออกเช่นนี้:
สำหรับรายละเอียดเพิ่มเติมโปรดอ่าน: https://github.com/inancgumus/prettyslice
fmt.Println(projects)
?