How to print the values of slices
Solution 1:
You can try the %v
, %+v
or %#v
verbs of go fmt:
fmt.Printf("%v", projects)
If your array (or here slice) contains struct
(like Project
), you will see their details.
For more precision, you can use %#v
to print the object using Go-syntax, as for a literal:
%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
For basic types, fmt.Println(projects)
is enough.
Note: for a slice of pointers, that is []*Project
(instead of []Project
), you are better off defining a String()
method in order to display exactly what you want to see (or you will see only pointer address).
See this play.golang example.
Solution 2:
For a []string
, you can use strings.Join()
:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
// output: foo, bar, baz
Solution 3:
I prefer fmt.Printf("%+q", arr)
which will print
["some" "values" "list"]
https://play.golang.org/p/XHfkENNQAKb
Solution 4:
If you just want to see the values of an array without brackets, you can use a combination of fmt.Sprint()
and strings.Trim()
a := []string{"a", "b"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]"))
fmt.Print(a)
Returns:
a b
[a b]
Be aware though that with this solution any leading brackets will be lost from the first value and any trailing brackets will be lost from the last value
a := []string{"[a]", "[b]"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]")
fmt.Print(a)
Returns:
a] [b
[[a] [b]]
For more info see the documentation for strings.Trim()