Maison > développement back-end > Golang > Comment puis-je parcourir dynamiquement les méthodes d'un package Go pour une calculatrice ?

Comment puis-je parcourir dynamiquement les méthodes d'un package Go pour une calculatrice ?

DDD
Libérer: 2024-11-16 20:38:03
original
255 Les gens l'ont consulté

How can I dynamically iterate through methods in a Go package for a calculator?

Itérer dynamiquement un package

Problème :

Un programmeur Go avec une expérience en Python rencontre de la verbosité en créant une calculatrice simple avec des fonctionnalités extensibles (addition, soustraction, etc.). Ils recherchent un moyen de parcourir dynamiquement toutes les méthodes de leur package de calculatrice pour simplifier le code et ajouter des fonctionnalités sans effort.

Réponse :

Go n'offre pas de mécanisme simple. pour introspecter les packages ou parcourir dynamiquement leur contenu. Le compilateur inclut uniquement les fonctions et variables dans l'exécutable qui sont directement référencées. Les fonctions qui ne sont jamais appelées sont omises.

Solution alternative :

Au lieu d'itérer dynamiquement dans le package, vous pouvez envisager de créer un tableau contenant des objets des types souhaités pour opérer. Cela vous permet de parcourir un ensemble prédéfini d'opérations de calculatrice :

type Calc interface {
    First(x int) int
    Second(x int) int
}

calculator := []Calc{
    &calculator.Add{},
    &calculator.Sub{},
    &calculator.Mul{},
    &calculator.Div{},
}

for _, calc := range calculator {
    x := 10
    fmt.Println(calc.First(x))
    fmt.Println(calc.Second(x))
}
Copier après la connexion

En utilisant un tableau, vous pouvez parcourir des méthodes de calculatrice spécifiques sans avoir besoin d'introspecter dynamiquement le package. L'ordre dans lequel les méthodes sont exécutées est également défini à l'avance.

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