Maison > développement back-end > Golang > Comment parcourir en toute sécurité une carte[string]*Book après la conversion à partir de l'interface{} ?

Comment parcourir en toute sécurité une carte[string]*Book après la conversion à partir de l'interface{} ?

Susan Sarandon
Libérer: 2024-12-01 11:53:11
original
529 Les gens l'ont consulté

How to Safely Iterate Over a map[string]*Book After Converting from interface{}?

Conversion de l'interface{} en carte avec itération

Dans votre code, vous rencontrez une erreur lors de la tentative de conversion de l'interface{} en carte . Pour résoudre ce problème et activer l'itération sur les éléments de la carte, suivez ces étapes :

Utilisez des assertions :

Remplacez l'approche basée sur la réflexion par des assertions de type direct, comme démontré dans le code ci-dessous :

func process(in interface{}, isSlice bool, isMap bool) {
    if isMap {
        v := in.(map[string]*Book)
        fmt.Printf("Type: %v\n", v)
        for _, s := range v {
            fmt.Printf("Value: %v\n", s)
        }
    }
}
Copier après la connexion

Cette assertion attribue la valeur interface{} à une variable de type map[string]*Book si la condition est remplie. Cette approche est plus efficace et ne nécessite pas de réflexion.

Vous pouvez également utiliser des instructions switch pour gérer différents types d'entrée sans utiliser de réflexion.

Utilisez des touches de mappage personnalisées avec réflexion ( Facultatif) :

Si vous avez toujours besoin d'utiliser la réflexion, vous pouvez récupérer les clés de carte à l'aide de Value.MapKeys au lieu de parcourir directement la valeur. Voir la réponse Stack Overflow mentionnée dans la solution fournie pour plus de détails sur cette approche.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal