Heim >Backend-Entwicklung >Golang >Wie kann ich Methoden in einem Go-Paket dynamisch durchlaufen?

Wie kann ich Methoden in einem Go-Paket dynamisch durchlaufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-16 16:51:03554Durchsuche

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

Dynamisches Durchlaufen von Paketen in Go

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!

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