Jak wydrukować wartości plasterków


103

Chcę zobaczyć wartości, które są w wycinku. Jak mogę je wydrukować?

projects []Project  

9
poza tym fmt.Println(projects)?
Not_a_Golfer

4
Ponadto: [] Projekty to kawałek, a nie tablica: golang.org/blog/go-slices-usage-and-internals
elithrar

Dlaczego wszyscy daliście mi -1?
fnr

2
@fnr przepraszam, ale recenzenci prawdopodobnie uznali, że pytanie zostało łatwo rozwiązane przez doc. Zaktualizowałem swoją odpowiedź, aby pokazać, że nie zawsze jest to takie oczywiste. Możesz zostawić swoje pytanie, jest ważne.
VonC,

2
@fnr - -1 na tej stronie oznacza pytanie: „nie wskazuje na wysiłek badawczy; jest niejasny lub nieprzydatny”. Widzę więc, że oznaczyłeś swoje pytanie jako „idź” i „tablice” i chcesz wiedzieć, „jak je wydrukować”. Jeśli wejdę na Google.com i wyszukam hasło „przejdź do tablic z samouczkami w języku programowania”, znajdę wiele zasobów, w tym ten, który może pomóc. Więc jeśli to pomoże, oznacza to, że nie zbadałeś go zbytnio przed wysłaniem. Jeśli to nie pomoże, musisz wywołać przeszukiwane witryny i wyjaśnić, dlaczego nie były pomocne.
Mike

Odpowiedzi:


171

Można spróbować %v, %+vczy %#vczasowniki odchodzenia FMT :

fmt.Printf("%v", projects)

Jeśli twoja tablica (lub tutaj wycinek ) zawiera struct(jak Project), zobaczysz ich szczegóły.
Aby uzyskać większą precyzję, możesz użyć %#vdo wydrukowania obiektu przy użyciu składni Go, tak jak w przypadku literału:

%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

W przypadku podstawowych typów fmt.Println(projects)wystarczy.


Uwaga: w przypadku wycinka wskaźników []*Project(zamiast []Project) lepiej jest zdefiniować String()metodę, aby wyświetlić dokładnie to, co chcesz zobaczyć (lub zobaczysz tylko adres wskaźnika).
Zobacz ten przykład play.golang .


27

Przez []stringmożna użyć strings.Join():

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

18

Wolę, fmt.Printf("%+q", arr)który będzie drukowany

["some" "values" "list"]

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


1
Jak uzyskać tablicę z separatorem przecinków?
Shoba

¯ \ _ (ツ) _ / ¯ Jeśli znajdziesz krótkie rozwiązanie, dodaj je jako odpowiedź na to pytanie. Założę się, że tego właśnie szuka większość ludzi.
Pylinux,

4

Jeśli chcesz zobaczyć tylko wartości tablicy bez nawiasów, możesz użyć kombinacji fmt.Sprint()istrings.Trim()

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

Zwroty:

a b
[a b]

Należy jednak pamiętać, że w przypadku tego rozwiązania wszelkie początkowe nawiasy zostaną utracone z pierwszej wartości, a wszelkie nawiasy końcowe zostaną utracone z ostatniej wartości

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

Zwroty:

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

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą ciągów.


W fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") brakuje parena po prawej stronie. Dzięki za fragment.
pdbrito


0

(Utworzono konto, aby skomentować istniejącą odpowiedź, ale nie mogę komentować, dopóki nie mam wystarczającej liczby przedstawicieli)

Jeśli chcesz wyświetlić informacje w wycinku w tym samym formacie, którego używałbyś do wpisania (niektóre jak [„jeden”, „dwa”, „trzy”]), oto przykładowy kod pokazujący, jak to zrobić :

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


3
Witamy w Stack Overflow! Jeśli twoja odpowiedź wnosi coś nowego do tematu, należy ona do sekcji odpowiedzi. Nie ma potrzeby, aby to usprawiedliwiać, mówiąc, że masz zbyt małą liczbę powtórzeń; Twój post jest dokładnie tam, gdzie powinien :) Biorąc to pod uwagę, ogólnie preferowane jest umieszczanie kodu, którego używasz, bezpośrednio w odpowiedzi, a nie jako łącze do innej witryny. Możesz zostawić link w, ale skopiuj również kod do swojej odpowiedzi. Dzięki!
Das_Geek

0

Możesz użyć pakietu Pretty Slice:

package main

import pretty "github.com/inancgumus/prettyslice"

func main() {
    nums := []int{1, 9, 5, 6, 4, 8}
    odds := nums[:3]
    evens := nums[3:]

    nums[1], nums[3] = 9, 6
    pretty.Show("nums", nums)
    pretty.Show("odds : nums[:3]", odds)
    pretty.Show("evens: nums[3:]", evens)
}

Ten kod będzie tworzył i wyświetlał w następujący sposób:

wprowadź opis obrazu tutaj


Aby uzyskać więcej informacji, przeczytaj: https://github.com/inancgumus/prettyslice

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.