Come stampare i valori delle fette


103

Voglio vedere i valori che sono nella fetta. Come posso stamparli?

projects []Project  

9
inoltre fmt.Println(projects)?
Not_a_Golfer

4
Inoltre: [] Projects è uno slice, non un array: golang.org/blog/go-slices-usage-and-internals
elithrar

Perché mi avete dato tutti -1?
fnr

2
@fnr mi dispiace, ma i revisori probabilmente hanno ritenuto che la domanda fosse facilmente risolta dal doc. Ho aggiornato la mia risposta per mostrare che non è sempre così ovvio. Puoi lasciare la tua domanda, è valida.
VonC

2
@fnr - un -1 su questo sito significa la domanda: "non mostra lo sforzo di ricerca; non è chiaro o non è utile". Quindi vedo che hai taggato la tua domanda "go" e "array" e vuoi sapere "come stamparli". Se vado su Google.com e cerco "go programming language tutorial array" trovo una serie di risorse tra cui questa che sembra potrebbe aiutare. Quindi, se questo aiuta, mostra che non hai fatto molte ricerche prima di pubblicare. Se questo non aiuta, devi chiamare i siti come questo che hai cercato e spiegare perché non è stato utile.
Mike

Risposte:


171

È possibile provare la %v, %+vo %#vverbi di FMT Go :

fmt.Printf("%v", projects)

Se il tuo array (o qui slice ) contiene struct(like Project), vedrai i loro dettagli.
Per una maggiore precisione, puoi usare %#vper stampare l'oggetto usando la sintassi Go, come per un letterale:

%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

Per i tipi di base, fmt.Println(projects)è sufficiente.


Nota: per una fetta di puntatori, cioè []*Project(invece di []Project), è meglio definire un String()metodo per visualizzare esattamente ciò che si desidera vedere (o vedrai solo l'indirizzo del puntatore).
Vedi questo esempio play.golang .


26

Per a []string, puoi usare strings.Join():

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

17

Preferisco fmt.Printf("%+q", arr)quale verrà stampato

["some" "values" "list"]

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


1
Come ottenere array con separatore virgola ??
Shoba

¯ \ _ (ツ) _ / ¯ Se trovi una soluzione breve, aggiungila come risposta a questa domanda. Scommetto che è quello che la maggior parte delle persone cerca.
Pylinux

4

Se vuoi solo vedere i valori di un array senza parentesi, puoi usare una combinazione di fmt.Sprint()estrings.Trim()

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

Ritorna:

a b
[a b]

Tieni presente però che con questa soluzione tutte le parentesi iniziali andranno perse dal primo valore e tutte le parentesi finali andranno perse dall'ultimo valore

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

Ritorna:

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

Per maggiori informazioni vedere la documentazione per le stringhe.


fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") manca una parentesi sul lato destro. Grazie per lo snippet.
pdbrito


0

(Creato un account per commentare una risposta esistente, ma non posso commentare fino a quando non ho abbastanza rep)

Se desideri visualizzare le informazioni in una slice nello stesso formato che useresti per digitarle (alcune come ["uno", "due", "tre"]), ecco un esempio di codice che mostra come farlo :

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


3
Benvenuto in Stack Overflow! Finché la tua risposta contribuisce con qualcosa di nuovo all'argomento, appartiene alla sezione delle risposte. Non c'è bisogno di giustificarlo dicendo che la tua reputazione è troppo bassa; il tuo post è esattamente al posto a cui appartiene :) Detto questo, è generalmente preferibile includere il codice che stai utilizzando direttamente nella risposta piuttosto che come collegamento a un altro sito. Sentiti libero di lasciare il link, ma copia anche il codice nella tua risposta. Grazie!
Das_Geek

0

Puoi utilizzare il pacchetto 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)
}

Questo codice verrà prodotto e generato come questo:

inserisci qui la descrizione dell'immagine


Per maggiori dettagli, leggi: https://github.com/inancgumus/prettyslice

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.