我想查看切片中的值。如何打印?
projects []Project
我想查看切片中的值。如何打印?
projects []Project
Answers:
你可以尝试%v
,%+v
或%#v
动词去FMT:
fmt.Printf("%v", projects)
如果您的数组(或此处的slice)包含struct
(如Project
),您将看到它们的详细信息。
为了获得更高的精度,可以%#v
像使用文字一样使用Go语法打印对象:
%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示例。
对于[]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]]
有关更多信息,请参见string.Trim()的文档。
(创建了一个帐户以对现有答案发表评论,但直到有足够的代表后我才能发表评论)
如果您想以与您键入时使用的格式相同的方式查看切片中的信息(例如[“ one”,“ two”,“ three”]),下面的代码示例显示了如何执行此操作:
您可以使用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)
?