Comment imprimer les valeurs des tranches

103

Je veux voir les valeurs qui sont dans la tranche. Comment puis-je les imprimer?

projects []Project  
fnr
la source
9
d'ailleurs fmt.Println(projects)?
Not_a_Golfer
4
Aussi: [] Projects est une tranche, pas un tableau: golang.org/blog/go-slices-usage-and-internals
elithrar
Pourquoi m'as-tu tous donné -1?
fnr
2
@fnr désolé, mais les critiques ont probablement estimé que la question était facilement résolue par le doc. J'ai mis à jour ma réponse pour montrer que ce n'est pas toujours aussi évident. Vous pouvez laisser votre question, elle est valide.
VonC
2
@fnr - un -1 sur ce site signifie la question: "ne montre pas l'effort de recherche; il n'est pas clair ou inutile". Donc je vois que vous avez tagué votre question "go" et "arrays" et que vous voulez savoir "comment les imprimer". Si je vais sur Google.com et que je recherche "aller dans les tableaux de didacticiels de langage de programmation", je trouve un certain nombre de ressources, y compris celle-ci, qui semble que cela pourrait aider. Donc, si cela vous aide, cela montre que vous n'avez pas beaucoup recherché avant de publier. Si cela ne vous aide pas, vous devez appeler les sites comme celui que vous avez recherché et expliquer pourquoi cela n'a pas été utile.
Mike

Réponses:

171

Vous pouvez essayer %v, %+vou des %#vverbes de fmt go :

fmt.Printf("%v", projects)

Si votre tableau (ou ici slice ) contient struct(like Project), vous verrez leurs détails.
Pour plus de précision, vous pouvez utiliser %#vpour imprimer l'objet en utilisant la syntaxe Go, comme pour un littéral:

%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

Pour les types de base, fmt.Println(projects)c'est suffisant.


Remarque: pour une tranche de pointeurs, c'est-à-dire []*Project(au lieu de []Project), il vaut mieux définir une String()méthode afin d'afficher exactement ce que vous voulez voir (ou vous ne verrez que l'adresse du pointeur).
Voir cet exemple play.golang .

VonC
la source
26

Pour un []string, vous pouvez utiliser strings.Join():

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

Je préfère fmt.Printf("%+q", arr)lequel imprimera

["some" "values" "list"]

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

Pylinux
la source
1
Comment obtenir un tableau avec un séparateur par virgule?
Shoba
¯ \ _ (ツ) _ / ¯ Si vous trouvez une solution courte, veuillez l'ajouter comme réponse à cette question. Je parie que c'est ce que recherchent la plupart des gens.
Pylinux
4

Si vous voulez simplement voir les valeurs d'un tableau sans crochets, vous pouvez utiliser une combinaison de fmt.Sprint()etstrings.Trim()

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

Retour:

a b
[a b]

Sachez cependant qu'avec cette solution, tous les crochets de début seront perdus à partir de la première valeur et tous les crochets de fin seront perdus à partir de la dernière valeur

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

Retour:

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

Pour plus d'informations, consultez la documentation relative aux chaînes.

Eddie Curtis
la source
fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") n'a pas de paren sur le côté droit. Merci pour l'extrait.
pdbrito
0

(J'ai créé un compte pour commenter une réponse existante, mais je ne peux pas commenter tant que j'ai pas assez de représentants)

Si vous souhaitez afficher les informations dans une tranche dans le même format que vous utiliseriez pour la saisir (certaines comme ["un", "deux", "trois"]), voici un exemple de code montrant comment procéder :

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

Gamelub
la source
3
Bienvenue dans Stack Overflow! Tant que votre réponse apporte quelque chose de nouveau au sujet, elle appartient à la section des réponses. Il n'est pas nécessaire de le justifier en disant que votre représentant est trop bas; votre message est à sa place :) Cela étant dit, il est généralement préférable d'inclure le code que vous utilisez directement dans la réponse plutôt que comme un lien vers un autre site. N'hésitez pas à laisser le lien, mais copiez également le code dans votre réponse. Merci!
Das_Geek
0

Vous pouvez utiliser le package 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)
}

Ce code va produire et sortir comme celui-ci:

entrez la description de l'image ici


Pour plus de détails, veuillez lire: https://github.com/inancgumus/prettyslice

Inanc Gumus
la source