Heim >Backend-Entwicklung >Golang >Wie kann ich Methoden in einem Go-Paket dynamisch durchlaufen?
Frage:
Als Anfänger in Go erstellen Sie einen Rechner, der Unterstützt derzeit Addition und Subtraktion. Sie stellen sich zukünftige Funktionen wie Multiplikation und Division vor. Allerdings empfinden Sie den aktuellen Ansatz in Ihren Dateien „addition.go“ und „subtraction.go“ als ausführlich und suchen nach einer dynamischeren Lösung. Gibt es eine Möglichkeit, alle Methoden im Rechnerpaket zu finden und dynamisch darüber zu iterieren?
Antwort:
Leider bietet Go keinen integrierten Mechanismus dafür Untersuchen Sie den Inhalt von Paketen und durchlaufen Sie deren Methoden dynamisch. Der Compiler nimmt nur Funktionen und Variablen in die ausführbare Datei auf, auf die explizit verwiesen wird. Das Iterieren über einen potenziell unvollständigen Satz von Symbolen wird in Go nicht als sinnvoll erachtet.
Alternative Lösung:
Als Alternative zur dynamischen Iteration können Sie ein Array zum Halten verwenden Objekte der Typen, die Sie bearbeiten möchten, und über dieses Array iterieren. Bei diesem Ansatz wird ein Slice von Schnittstellen erstellt:
type Calc interface { First(x int) int Second(x int) int } var operations []Calc
Dann können Sie Objekte Ihrer konkreten Typen an den Slice anhängen:
operations = append(operations, &calculator.Add{}) operations = append(operations, &calculator.Sub{})
Sie können dann über den Slice iterieren und aufrufen Methoden dynamisch:
for _, operation := range operations { fmt.Println(operation.First(x)) fmt.Println(operation.Second(x)) }
Dieser Ansatz bietet eine flexible Möglichkeit, die Rechneroperationen in Ihrem Paket zu durchlaufen, ohne dass Dynamik erforderlich ist Selbstbeobachtung.
Das obige ist der detaillierte Inhalt vonWie kann ich Methoden in einem Go-Paket dynamisch durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!