Maison > développement back-end > Golang > le corps du texte

Comment sélectionner des fonctions dans une liste basée sur les types de paramètres et de retour dans Go ?

DDD
Libérer: 2024-10-29 19:29:02
original
907 Les gens l'ont consulté

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

Sélection de fonctions dans une liste dans Go

Dans Go, il est possible de créer des listes de fonctions à l'aide de tranches ou de tableaux. Cependant, la sélection de fonctions en fonction de critères spécifiques, tels que le type de retour ou les types de paramètres, nécessite l'utilisation de la réflexion.

Pour déterminer si une fonction prend des arguments entiers ou renvoie un entier, nous pouvons utiliser le package Reflect pour examiner sa signature de type. Voici un exemple de code qui montre comment y parvenir :

<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>
Copier après la connexion

En utilisant la réflexion, nous pouvons introspecter les fonctions de la liste et imprimer sélectivement celles qui répondent aux critères spécifiés. Le code est explicite et fournit une démonstration claire de la façon de gérer ce problème dans Go.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal