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)
La variable in 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)
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é. .
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3