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: p>
3 Réponses :
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,
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.
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 Pour initialiser une carte, vous devez utiliser la fonction une carte non initialisée est égale à La syntaxe pour stocker des valeurs est très identique à la même chose avec des tableaux ou des tranches: P> carte [keytype] valstetype code> où keytype code> et valeur de type code> sont les types des touches et des valeurs respectivement. p> créer code>: p> nil , et si la lecture de la panique ou écrite d'une panique se produira au moment de l'exécution. P> o := make(map[interface{}]int)
o[1] = 1
o["Two"] = 2
Plus comme des cartes et des commutateurs de type en un mot, avec une tirette de l'inerface vide {}. Excellente réponse.
Pas besoin de conditionnel, il est plus idiomatique de simplement faire
m [clé] ++ code>. Si la clé existe, vous obtenez la valeur zéro.