Golang-как печатать значения массивов?


Я хочу видеть значения, которые находятся в массивах. Как я могу их напечатать?

projects []Project  
3 54

3 ответа:

вы можете попробовать %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), вам лучше определить a String() метод для того, чтобы отобразить именно то, что вы хотите видеть (или вы увидите только адрес указателя).
Смотрите это играть.голанг пример.

на []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.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]]

для получения дополнительной информации см. документацию для строки.Отделка()