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
Susan Sarandonoriginal
2024-12-01 11:53:11644parcourir

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)
        }
    }
}

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!

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