Maison > développement back-end > Golang > Comment utiliser correctement la fonction « reflect.Call » avec un paramètre de carte ?

Comment utiliser correctement la fonction « reflect.Call » avec un paramètre de carte ?

Linda Hamilton
Libérer: 2024-10-30 20:17:03
original
407 Les gens l'ont consulté

How to Correctly Use the `reflect.Call` Function with a Map Parameter?

Résolution du problème d'utilisation de .Call dans le package Reflect

Lors de l'utilisation de la fonction .Call dans le package Reflect, il est crucial de respecter le format de paramètre requis. Cet article vous guidera tout au long du processus d'utilisation correcte de la fonction .Call et de manipulation de la variable in pour répondre à la méthode cible.

Dans l'exemple de code fourni :

params := "some map[string][]string"
in := make([]reflect.Value,0)
return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)
Copier après la connexion

Le in La variable est initialisée comme une tranche vide. Comme la méthode que vous avez l'intention d'appeler attend un seul paramètre de type map[string][]string, la tranche in doit contenir une instance de réflexion.Value contenant cette carte.

Pour résoudre ce problème, l'approche correcte est pour créer une carte, puis la convertir en réflexion.Value à l'aide de réflexion.ValueOf. Voici le code ajusté :

m := map[string][]string{"foo": []string{"bar"}}
in := []reflect.Value{reflect.ValueOf(m)}

return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)
Copier après la connexion

Avec cette modification, la variable in transmettra correctement la carte à la méthode cible, garantissant ainsi la réussite de l'appel de fonction souhaité.

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