Accès aux clés des cartes avec différents types de valeurs
Dans Go, les cartes sont intrinsèquement génériques, mais leur comportement n'est pas covariant en raison de l'absence de types génériques. Cela signifie que vous pouvez rencontrer des scénarios dans lesquels vous souhaitez accéder aux clés de cartes avec différents types de valeurs. Une tentative d'utilisation d'une interface{} comme type de valeur peut sembler intuitive, mais elle ne fonctionne pas comme prévu.
func main() { mapOne := map[string]int mapTwo := map[string]double mapThree := map[string]SomeStruct useKeys(mapOne) } func useKeys(m map[string]interface{}) { //something with keys here }
Bien qu'il soit compréhensible de désirer une solution élégante, il est nécessaire de reconnaître que dans Go , vous devrez peut-être reproduire une certaine logique pour les cartes avec différents types de valeurs.
Cependant, si vous avez besoin de flexibilité pour obtenir des clés à partir de n'importe quelle carte, la réflexion peut être employé :
func useKeys(m interface{}) { v := reflect.ValueOf(m) if v.Kind() != reflect.Map { fmt.Println("not a map!") return } keys := v.MapKeys() fmt.Println(keys) }
Cette approche permet de travailler avec des cartes de tout type, donnant accès à leurs clés.
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!