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