Я хочу видеть значения, которые находятся в массивах. Как я могу их распечатать?
projects []Project
Я хочу видеть значения, которые находятся в массивах. Как я могу их распечатать?
projects []Project
Вы можете попробовать %v
, %+v
или %#v
глаголы go fmt:
fmt.Printf("%v", projects)
Если ваш массив (или здесь фрагмент) содержит 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.Printf("%+q", arr)
, который будет печатать
["some" "values" "list"]
Если вы просто хотите видеть значения массива без скобок, вы можете использовать комбинацию fmt.Sprint()
и strings.Trim()
a := []string{"a", "b"}
fmt.Printf(strings.Trim(fmt.Sprintf(a), "[]")
fmt.Printf(a)
Возврат:
a b
[a b]
Имейте в виду, что при этом решении любые первые скобки будут потеряны из первого значения, и любые конечные скобки будут потеряны из последнего значения
a := []string{"[a]", "[b]"}
fmt.Printf(strings.Trim(fmt.Sprintf(a), "[]")
fmt.Printf(a)
Возврат:
a] [b
[[a] [b]]
Для получения дополнительной информации см. документацию для strings.Trim()
fmt.Printf()
- это хорошо, но иногда мне нравится использовать симпатичный пакет печати.
import "github.com/kr/pretty"
pretty.Print(...)