Heim > Backend-Entwicklung > Golang > Wie wähle ich in Go Funktionen aus einer Liste basierend auf Parameter- und Rückgabetypen aus?

Wie wähle ich in Go Funktionen aus einer Liste basierend auf Parameter- und Rückgabetypen aus?

DDD
Freigeben: 2024-10-29 19:29:02
Original
938 Leute haben es durchsucht

How to Select Functions from a List Based on Parameter and Return Types in Go?

Auswählen von Funktionen aus einer Liste in Go

In Go ist es möglich, Listen von Funktionen mithilfe von Slices oder Arrays zu erstellen. Die Auswahl von Funktionen basierend auf bestimmten Kriterien wie Rückgabetyp oder Parametertypen erfordert jedoch die Verwendung von Reflektion.

Um festzustellen, ob eine Funktion Ganzzahlargumente akzeptiert oder eine Ganzzahl zurückgibt, können wir zur Untersuchung das Reflect-Paket verwenden seine Typsignatur. Hier ist ein Beispielcode, der zeigt, wie dies erreicht wird:

<code class="go">package main

import (
    "fmt"
    "reflect"
)

func main() {
    funcs := make([]interface{}, 3, 3) // Use interface{} for any function type
    funcs[0] = func(a int) int { return a + 1 } // Accepts an int, returns an int
    funcs[1] = func(a string) int { return len(a) } // Accepts a string, returns an int
    funcs[2] = func(a string) string { return ":(" } // Accepts a string, returns a string

    for _, fi := range funcs {
        f := reflect.ValueOf(fi)
        functype := f.Type()
        hasIntParam := false
        hasIntReturn := false

        // Check function parameters for int type
        for i := 0; i < functype.NumIn(); i++ {
            if "int" == functype.In(i).String() {
                hasIntParam = true
                break
            }
        }

        // Check function return value for int type
        for i := 0; i < functype.NumOut(); i++ {
            if "int" == functype.Out(i).String() {
                hasIntReturn = true
                break
            }
        }

        // Print the function if it has integer parameter or return type
        if hasIntParam || hasIntReturn {
            fmt.Println(f)
        }
    }
}</code>
Nach dem Login kopieren

Durch die Verwendung von Reflektion können wir die Funktionen in der Liste überprüfen und selektiv diejenigen drucken, die die angegebenen Kriterien erfüllen. Der Code ist selbsterklärend und bietet eine klare Demonstration, wie dieses Problem in Go gelöst werden kann.

Das obige ist der detaillierte Inhalt vonWie wähle ich in Go Funktionen aus einer Liste basierend auf Parameter- und Rückgabetypen aus?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage