Maison >développement back-end >Golang >A quoi sert la carte Golang ?
Le type de données cartographiques est disponible dans de nombreuses langues. Il s'agit d'une table de hachage sous forme de clé et de valeur, afin que la clé et la valeur puissent être mappées une par une. recherche et ajout rapides, suppression et autres opérations. Le langage Go ne fait pas exception, fournissant le type de structure de données cartographiques.
N'utilisez pas la carte intégrée prête à l'emploi Comme le découpage de pointeur, il pointe vers zéro après avoir été déclaré avec le code suivant. Ceci est également expliqué dans la documentation officielle de Golang, donc ne l'utilisez jamais directement après l'avoir déclaré. Vous pouvez souvent commettre les erreurs suivantes au début :
var m map[string]string m["result"] = "result"La première ligne de code ci-dessus n'initialise pas la carte, mais. y écrire est une référence à un pointeur nul, ce qui provoquera un problème. Alors, n'oubliez pas d'utiliser la fonction make pour allouer de la mémoire et l'initialiser :
m := make(map[string]string) m["result"] = "result"
La carte dans Golang n'est pas sécurisée en matière de concurrence
souvent Utiliser map est généralement très agréable, mais soudain un jour le trafic augmente et le programme raccroche sans même s'en rendre compte, je ne sais pas ce qui s'est passé, mais ça fonctionnait bien avant. Par conséquent, certaines bonnes habitudes doivent être développées dès le début, telles que la vérification des assertions, les considérations de sécurité de la concurrence, etc.
Vous pouvez peut-être essayer sync.MapLe sync.Map dans Golang est sécurisé pour la concurrence. En fait, il s'agit d'une structure personnalisée par Golang appelée Map dans le package de synchronisation. Le prototype de structure est le suivant :type Map struct { mu Mutex read atomic.Value // readOnly dirty map[interface{}]*entry misses int }Vous pouvez voir qu'il existe un Mutex. Il est évident qu'un mécanisme de verrouillage est utilisé pour assurer la sécurité de la concurrence. La carte de ce package fournit des opérations de stockage, de chargement, de suppression, de plage et d'autres opérations. Et la carte dans le package de synchronisation est disponible prête à l'emploi, c'est-à-dire qu'elle peut être utilisée directement après avoir été déclarée, comme suit :
var m sync.Map m.Store("method", "eth_getBlockByHash") value, ok := m.Load("method") t.Logf("value=%v,ok=%v\n",value,ok)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!