Heim > Backend-Entwicklung > Golang > Wie vermeide ich den Fehler „Reflect: Aufruf mit zu wenigen Eingabeargumenten' bei der Verwendung von .Call in Go?

Wie vermeide ich den Fehler „Reflect: Aufruf mit zu wenigen Eingabeargumenten' bei der Verwendung von .Call in Go?

Susan Sarandon
Freigeben: 2024-10-29 13:43:29
Original
552 Leute haben es durchsucht

How to Avoid

Richtige Nutzung der .Call-Methode des Reflect-Pakets

Bei der Arbeit mit der .Call-Funktion des Reflect-Pakets stoßen Entwickler häufig auf den Fehler „Reflect: Aufruf mit zu wenigen Eingabeargumenten“. ." Dieses Problem ergibt sich aus der Notwendigkeit, den „in“-Parameter mit dem entsprechenden Wert zu füllen, der die Eingabe der Funktion darstellt.

Konstruktion des „in“-Arguments

Um dieses Problem zu lösen, das „in“-Argument muss ein Slice von Reflect.Value-Objekten sein, wobei jeder Wert den erwarteten Typ des entsprechenden Funktionsparameters darstellt. Im bereitgestellten Beispiel erfordert die Methode einen einzelnen Parameter vom Typ „map[string][]string.

Um das Slice mit dem Eingabeparameter zu erstellen, ist die richtige Vorgehensweise die Verwendung von:

<code class="go">in := []reflect.Value{reflect.ValueOf(params)}</code>
Nach dem Login kopieren

wobei „params“ die Karte ist, die Sie an die Funktion übergeben möchten.

Beispielverwendung

Für die Beispielmethode:

<code class="go">func (c *Controller) Root(params map[string][]string) map[string] string{}</code>
Nach dem Login kopieren

Der richtige Aufruf mit . Der Anruf wäre:

<code class="go">params := map[string][]string{"foo": []string{"bar"}}
in := []reflect.Value{reflect.ValueOf(params)}
return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in)</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie vermeide ich den Fehler „Reflect: Aufruf mit zu wenigen Eingabeargumenten' bei der Verwendung von .Call in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage