@fnr sorry, aber die Rezensenten waren wahrscheinlich der Meinung, dass die Frage vom Dokument leicht gelöst werden konnte. Ich habe meine Antwort aktualisiert, um zu zeigen, dass sie nicht immer so offensichtlich ist. Sie können Ihre Frage hinterlassen, es ist eine gültige.
VonC
2
@fnr - a -1 auf dieser Site bedeutet die Frage: "zeigt keinen Forschungsaufwand; es ist unklar oder nicht nützlich". Ich sehe also, dass Sie Ihre Frage mit "go" und "arrays" markiert haben und wissen möchten, wie man sie druckt. Wenn ich auf Google.com nach "Tutorial-Arrays für Programmiersprachen" suche, finde ich eine Reihe von Ressourcen, einschließlich dieser, die möglicherweise hilfreich sind. Wenn dies hilft, zeigt dies, dass Sie vor dem Posten nicht viel recherchiert haben. Wenn dies nicht hilft, müssen Sie Websites wie diese, die Sie durchsucht haben, aufrufen und erklären, warum dies nicht hilfreich war.
Mike
Antworten:
170
Sie können versuchen %v, die %+voder %#vVerben von go fmt :
fmt.Printf("%v", projects)
Wenn Ihr Array (oder hier Slice ) struct(wie Project) enthält , sehen Sie deren Details.
Für mehr Präzision können Sie %#vdas Objekt mit der Go-Syntax drucken, wie bei einem Literal:
%v the valuein a default format.when printing structs, the plus flag (%+v) adds field names
%#v a Go-syntax representation of the value
Für Grundtypen fmt.Println(projects)reicht das aus.
Hinweis: Für ein Stück Zeiger, dh []*Project(anstelle von []Project), ist es besser, eine String()Methode zu definieren , um genau das anzuzeigen, was Sie sehen möchten (oder Sie sehen nur die Zeigeradresse).
Siehe dieses play.golang-Beispiel .
¯ \ _ (ツ) _ / ¯ Wenn Sie eine kurze Lösung finden, fügen Sie diese bitte als Antwort auf diese Frage hinzu. Ich wette, das ist es, wonach die meisten Leute suchen.
Pylinux
4
Wenn Sie nur die Werte eines Arrays ohne Klammern anzeigen möchten, können Sie eine Kombination aus fmt.Sprint()und verwendenstrings.Trim()
a :=[]string{"a","b"}
fmt.Print(strings.Trim(fmt.Sprint(a),"[]"))
fmt.Print(a)
Kehrt zurück:
a b
[a b]
Beachten Sie jedoch, dass bei dieser Lösung alle führenden Klammern ab dem ersten Wert und alle nachfolgenden Klammern ab dem letzten Wert verloren gehen
a :=[]string{"[a]","[b]"}
fmt.Print(strings.Trim(fmt.Sprint(a),"[]")
fmt.Print(a)
Kehrt zurück:
a][b
[[a][b]]
Weitere Informationen finden Sie in der Dokumentation zu Strings.Trim ()
(Es wurde ein Konto erstellt, um eine vorhandene Antwort zu kommentieren, aber ich kann erst kommentieren, wenn ich genügend Mitarbeiter habe.)
Wenn Sie die Informationen in einem Slice in demselben Format anzeigen möchten, in dem Sie sie eingeben würden (einige wie ["eins", "zwei", "drei"]), finden Sie hier ein Codebeispiel, das zeigt, wie das geht ::
Willkommen bei Stack Overflow! Solange Ihre Antwort etwas Neues zum Thema beiträgt, gehört sie in den Antwortbereich. Sie müssen es nicht rechtfertigen, indem Sie sagen, dass Ihr Repräsentant zu niedrig ist. Ihr Beitrag ist genau dort, wo er hingehört :) Abgesehen davon ist es im Allgemeinen vorzuziehen, den von Ihnen verwendeten Code direkt in die Antwort aufzunehmen, anstatt als Link zu einer anderen Site. Fühlen Sie sich frei, den Link in zu lassen, aber kopieren Sie den Code auch in Ihre Antwort. Vielen Dank!
fmt.Println(projects)
?Antworten:
Sie können versuchen
%v
, die%+v
oder%#v
Verben von go fmt :Wenn Ihr Array (oder hier Slice )
struct
(wieProject
) enthält , sehen Sie deren Details.Für mehr Präzision können Sie
%#v
das Objekt mit der Go-Syntax drucken, wie bei einem Literal:Für Grundtypen
fmt.Println(projects)
reicht das aus.Hinweis: Für ein Stück Zeiger, dh
[]*Project
(anstelle von[]Project
), ist es besser, eineString()
Methode zu definieren , um genau das anzuzeigen, was Sie sehen möchten (oder Sie sehen nur die Zeigeradresse).Siehe dieses play.golang-Beispiel .
quelle
Für a
[]string
können Sie verwendenstrings.Join()
:quelle
Ich bevorzuge
fmt.Printf("%+q", arr)
welche drucken wirdhttps://play.golang.org/p/XHfkENNQAKb
quelle
Wenn Sie nur die Werte eines Arrays ohne Klammern anzeigen möchten, können Sie eine Kombination aus
fmt.Sprint()
und verwendenstrings.Trim()
Kehrt zurück:
Beachten Sie jedoch, dass bei dieser Lösung alle führenden Klammern ab dem ersten Wert und alle nachfolgenden Klammern ab dem letzten Wert verloren gehen
Kehrt zurück:
Weitere Informationen finden Sie in der Dokumentation zu Strings.Trim ()
quelle
fmt.Printf()
ist in Ordnung, aber manchmal verwende ich gerne ein hübsches Druckpaket .quelle
(Es wurde ein Konto erstellt, um eine vorhandene Antwort zu kommentieren, aber ich kann erst kommentieren, wenn ich genügend Mitarbeiter habe.)
Wenn Sie die Informationen in einem Slice in demselben Format anzeigen möchten, in dem Sie sie eingeben würden (einige wie ["eins", "zwei", "drei"]), finden Sie hier ein Codebeispiel, das zeigt, wie das geht ::
https://play.golang.org/p/vOF6xZ__Otr
quelle
Sie können das Pretty Slice-Paket verwenden:
Dieser Code wird wie folgt produziert und ausgegeben:
Weitere Informationen finden Sie unter: https://github.com/inancgumus/prettyslice
quelle