Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Methoden in einem Go-Paket für einen Taschenrechner dynamisch durchlaufen?

Wie kann ich Methoden in einem Go-Paket für einen Taschenrechner dynamisch durchlaufen?

DDD
DDDOriginal
2024-11-16 20:38:03178Durchsuche

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

Dynamisches Durchlaufen eines Pakets

Problem:

Ein Go-Programmierer mit einem Hintergrund in Python stößt beim Erstellen eines einfachen Rechners mit erweiterbaren Funktionen (Addition, Subtraktion usw.) auf Ausführlichkeit. Sie suchen nach einer Möglichkeit, alle Methoden in ihrem Rechnerpaket dynamisch zu durchlaufen, um Code zu vereinfachen und Funktionen mühelos hinzuzufügen.

Antwort:

Go bietet keinen einfachen Mechanismus um Pakete zu überprüfen oder deren Inhalte dynamisch zu durchlaufen. Der Compiler nimmt nur Funktionen und Variablen in die ausführbare Datei auf, auf die direkt verwiesen wird. Funktionen, die nie aufgerufen werden, werden weggelassen.

Alternative Lösung:

Anstatt das Paket dynamisch zu durchlaufen, können Sie erwägen, ein Array mit Objekten der gewünschten Typen zu erstellen zu operieren. Dadurch können Sie über einen vordefinierten Satz von Rechneroperationen iterieren:

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))
}

Durch die Verwendung eines Arrays können Sie bestimmte Rechnermethoden durchlaufen, ohne das Paket dynamisch überprüfen zu müssen. Die Reihenfolge, in der die Methoden ausgeführt werden, wird ebenfalls im Voraus festgelegt.

Das obige ist der detaillierte Inhalt vonWie kann ich Methoden in einem Go-Paket für einen Taschenrechner dynamisch durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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