web-dev-qa-db-fra.com

Obtenir l'union de deux cartes en cours

J'ai une fonction récursive qui crée des objets représentant des chemins de fichiers (les clés sont des chemins et les valeurs sont des informations sur le fichier). Il est récursif car il est uniquement destiné à gérer des fichiers, donc si un répertoire est rencontré, la fonction est appelée récursivement sur le répertoire.

Cela étant dit, je voudrais faire l'équivalent d'une union définie sur deux cartes (c'est-à-dire la carte "principale" mise à jour avec les valeurs de l'appel récursif). Existe-t-il un moyen idiomatique de le faire en plus d'itérer sur une carte et d'attribuer chaque clé, de la valoriser à la même chose dans l'autre carte?

C'est-à-dire: étant donné a,b sont de type map [string] *SomeObject, et a et b sont éventuellement remplis, existe-t-il un moyen de mettre à jour a avec toutes les valeurs dans b?

52
jeffknupp

Il n'y a pas de méthode intégrée, ni aucune méthode dans les packages standard pour effectuer une telle fusion.

La manière idomatique est d'itérer simplement:

for k, v := range b {
    a[k] = v
}
76
ANisus