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