Cette question tourne autour de l'obtention des clés d'une carte dans Go. La fonction Keys() fournie est conçue pour extraire les clés d'une carte avec un type d'interface générique, mais rencontre un problème en raison du système de typage puissant de Go, où map[int]interface{} ne correspond pas à map[interface{}]interface{ }.
Go ne prend pas en charge les génériques, ce qui signifie que les types de mappage doivent être explicitement définis pour chaque combinaison de clé et de type de valeur. Le système de types fort garantit la sécurité des types, empêchant les affectations entre types incompatibles, tels que int et interface{}.
Une approche consiste à modifier la fonction Keys() pour qu'elle corresponde au type de carte spécifique utilisé. Par exemple, si la carte utilise des clés int, la fonction doit être définie comme func Keys(m map[int]interface{}) []int.
Si le type de carte souhaité est map[interface{}]interface{}, l'initialisation de la carte doit être modifiée en conséquence, comme dans l'exemple suivant :
m2 := map[interface{}]interface{}{ 2: "string", 3: "int", }
Pour les scénarios complexes, le package Reflection peut être utilisé pour accéder et manipuler dynamiquement les clés de la carte. Cependant, cette approche a des implications en termes de performances en raison de la surcharge associée à la réflexion.
Le problème rencontré est une conséquence du système de typage puissant de Go et du manque de génériques. Les solutions recommandées proposent différentes manières de gérer l'inadéquation des types, vous permettant de récupérer les clés de carte comme vous le souhaitez.
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!