web-dev-qa-db-de.com

Golang - Wie werden die Werte von Arrays gedruckt?

Ich möchte die Werte sehen, die in den Arrays sind. Wie kann ich sie ausdrucken?

projects []Project  
58
fnr

Sie können die Verben %v, %+v oder %#v von go fmt versuchen:

fmt.Printf("%v", projects)

Wenn Ihr Array (oder hier Slice ) struct (wie Project) enthält, werden deren Details angezeigt.
Für mehr Genauigkeit können Sie %#v verwenden, um das Objekt mit der Go-Syntax zu drucken, wie bei einem 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

Für Basistypen reicht fmt.Println(projects) aus.


Hinweis: Für ein Stück Zeiger, dh []*Project (anstelle von []Project), sollten Sie besser eine String()-Methode definieren, um genau das anzuzeigen, was Sie sehen möchten (oder nur die Zeigeradresse).
Siehe dieses play.golang Beispiel .

109
VonC

Für einen []string können Sie strings.Join() verwenden:

s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
// output: foo, bar, baz
11
jgillich

Wenn Sie nur die Werte eines Arrays ohne Klammern anzeigen möchten, können Sie eine Kombination aus fmt.Sprint() und strings.Trim() verwenden.

a := []string{"a", "b"}
fmt.Printf(strings.Trim(fmt.Sprintf(a), "[]")
fmt.Printf(a)

Kehrt zurück:

a b
[a b]

Beachten Sie jedoch, dass bei dieser Lösung alle führenden Klammern beim ersten Wert und alle nachfolgenden Klammern beim letzten Wert verloren gehen

a := []string{"[a]", "[b]"}
fmt.Printf(strings.Trim(fmt.Sprintf(a), "[]")
fmt.Printf(a)

Kehrt zurück:

a] [b
[[a] [b]]

Weitere Informationen finden Sie in der Dokumentation zu strings.Trim ()

3
Eddie Curtis

Ich bevorzuge fmt.Printf("%+q\n", arr) was gedruckt wird

["some" "values" "list"]

https://play.golang.org/p/XHfkENNQAKb

1
Pylinux

fmt.Printf() ist in Ordnung, aber manchmal benutze ich pretty print package .

import "github.com/kr/pretty"
pretty.Print(...)
0
akond