12
votes

Y a-t-il des bibliothèques de go offrant une capacité de réseau associatif?

Je cherche une capacité de langue go similaire au "Dictionnaire" en Python pour faciliter la conversion de certains codes Python.

Edit: Les cartes fonctionnaient assez bien pour cette application DEUPE. J'ai été capable de condenser des éléments dupliqués à 2.5E5 à 2.5e5 d'éléments uniques à l'aide d'une carte avec un indice de chaîne de 16 octets en quelques secondes seulement. Le code associé sur la carte était simple, donc je l'ai inclus ci-dessous. Il convient de noter que la pré-allocation de la carte avec 1.3E6 Éléments a augmenté de seulement quelques pour cent: xxx


1 commentaires

Pas besoin de conditionnel, il est plus idiomatique de simplement faire m [clé] ++ . Si la clé existe, vous obtenez la valeur zéro.


3 Réponses :


0
votes

Vous recherchez probablement un Carte .


0 commentaires

9
votes

Le type de carte. http://golang.org/doc/effective_go.html#maps

là Est-ce qu'une différence de python dans ce que les clés doivent être dactylographiées, pour que vous ne puissiez pas mélanger les touches numériques et de cordes (pour une raison quelconque, j'ai oublié que vous pouvez), mais ils sont assez faciles à utiliser. xxx


5 commentaires

Vous pouvez créer une interface carte [String] {} pour contenir des types mixtes si vous ne voulez pas que les assertions de type, tapez les commutateurs ou éventuellement même à la réflexion pour obtenir les valeurs à nouveau.


Toutes les clés seront des valeurs de chaîne alors je pense que cela fonctionnera juste bien


@Chickencha Yah je faisais juste référence au type de clés. J'utilise la carte [string] interface {} un peu


@ Chthom06 Même la carte [Interface {}] Interface {} est autorisée, bien que je pense que les structures ou les tranches car les clés pourraient causer des paniques d'exécution, car elles ne peuvent pas être comparées.


@Chickencha Pour une raison quelconque, je l'avais dans ma tête que map [interface {}] n'a travaillé que avec des pointeurs, mais cela fonctionne certainement avec des chaînes et des chiffres. Vous avez raison, les structures et les tranches sont nulles.



29
votes

Pour développer un peu sur les réponses déjà indiquées:

une carte GO est une structure de données de carte de hachage tapé. La signature de type de la carte est de la forme carte [keytype] valstetype code> où keytype code> et valeur de type code> sont les types des touches et des valeurs respectivement. p>

Pour initialiser une carte, vous devez utiliser la fonction créer code>: p> xxx pré>

une carte non initialisée est égale à nil , et si la lecture de la panique ou écrite d'une panique se produira au moment de l'exécution. P>

La syntaxe pour stocker des valeurs est très identique à la même chose avec des tableaux ou des tranches: P>

o := make(map[interface{}]int)
o[1] = 1
o["Two"] = 2


1 commentaires

Plus comme des cartes et des commutateurs de type en un mot, avec une tirette de l'inerface vide {}. Excellente réponse.