Maison >développement back-end >Golang >Pourquoi mon code Go génère-t-il une erreur « Impossible d'attribuer m2 à Map[interface{}]interface{} » ?

Pourquoi mon code Go génère-t-il une erreur « Impossible d'attribuer m2 à Map[interface{}]interface{} » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-06 21:50:13266parcourir

Why Does My Go Code Throw a

Comment résoudre l'erreur « Impossible d'attribuer m2 à Map[interface{}]interface{} »

Dans votre code, vous avez rencontré une erreur liée au type compatibilité entre une carte utilisée dans la fonction Touches et la carte à laquelle vous essayez d'accéder :

cannot use m2 (type map[int]interface {}) as type map[interface {}]interface {} in argument to Keys

Pour résoudre ce problème, vous devez garder à l'esprit le suivant :

Système de types et génériques de Golang

  • Golang est un langage typé statiquement, ce qui signifie qu'il nécessite des définitions de type explicites.
  • Golang ne prend pas en charge les génériques, donc vous ne pouvez pas définir une fonction avec des types génériques.

Compatibilité des types

Dans votre code, la fonction Keys est définie pour fonctionner avec une carte de type map[interface{}]interface{}, tandis que vous utilisez une carte de type map[int]interface{}. Ces types ne sont pas compatibles car les types de clés sont différents.

Options de résolution

Il existe plusieurs façons de résoudre ce problème :

Option 1 : Modifier le Fonction des touches

  1. Modifier la définition de la fonction pour accepter une carte de type map[int]interface{} :
func Keys(m map[int]interface{}) []interface{} {
    // Implement function
}

Option 2 : Modifier la carte

  1. Changez le type de votre carte en map[ interface{}]interface{} :
m2 := map[interface{}]interface{}{
    2: "string",
    3: "int",
}

Option 3 : Utiliser la réflexion (pas Recommandé)

  1. Utilisez le package Reflect pour accéder aux touches de la carte. Cependant, cette approche s'accompagne de pénalités en termes de performances.

N'oubliez pas que la compatibilité des types est cruciale dans Golang. Assurez-vous que les types de votre code correspondent aux types attendus pour éviter de telles erreurs.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn