Heim > Backend-Entwicklung > Golang > Wie kann man Strukturen dynamisch scannen und manipulieren, indem man eine bestimmte Schnittstelle in Golang implementiert?

Wie kann man Strukturen dynamisch scannen und manipulieren, indem man eine bestimmte Schnittstelle in Golang implementiert?

Barbara Streisand
Freigeben: 2024-10-30 10:29:02
Original
1041 Leute haben es durchsucht

 How to Dynamically Scan and Manipulate Structures Implementing a Specific Interface in Golang?

Golang: Strukturen mit spezifischen Implementierungen scannen

In Go kann die Bearbeitung mehrerer Strukturen mit einer gemeinsamen Schnittstelle eine Herausforderung darstellen. Während es möglich ist, jede Strukturinstanz einzeln zu behandeln, müssen Sie möglicherweise automatisch alle Strukturen finden und bearbeiten, die einer bestimmten Schnittstelle entsprechen.

Das Problem

Das Szenario beinhaltet eine Implementierung einer Schnittstelle I durch mehrere Strukturen (A, B und C). Beim Start der Anwendung müssen Sie die Methode start() für jede A-, B- und C-Instanz aufrufen. Ebenso müssen Sie bei der Beendigung die Methode stop() für diese Instanzen aufrufen. Sie möchten jedoch vermeiden, diese spezifischen Strukturen in Ihrem Code fest zu codieren, um nahtlose Änderungen zu ermöglichen, wenn neue Strukturen eingeführt werden, die die I-Schnittstelle implementieren.

Die Antwort

Leider In Go ist der von Ihnen geplante Ansatz nicht realisierbar. Go ist eine statisch typisierte Sprache und der Linker eliminiert ungenutzte Typdefinitionen und Methoden. Daher werden Typen, auf die in Ihrem Code nicht explizit verwiesen wird, weggelassen.

Alternative Lösung

Ein alternativer Ansatz besteht darin, eine globale Karte (oder einen Slice) zu erstellen, die speichert Instanzen jeder Struktur, die die I-Schnittstelle implementiert. Diese Instanzen können während der Initialisierung mithilfe einer Init-Funktion registriert werden:

<code class="go">var instMap = map[string]StartStopper

type A struct {}

func init() {
    instMap["A"] = new(A)
}</code>
Nach dem Login kopieren

Während des Startvorgangs können Sie über die Karte iterieren und die Start()-Methode für jede Instanz aufrufen.

Umgang mit mehreren Instanzen

Wenn es mehrere Instanzen jedes Strukturtyps geben kann, müssen Sie Ihren Registrierungsprozess ändern, um Instanzen bei der Erstellung zur Karte hinzuzufügen. Sie sollten Instanzen auch entfernen, wenn sie nicht mehr verwendet werden, um mögliche Speicherlecks zu verhindern.

Das obige ist der detaillierte Inhalt vonWie kann man Strukturen dynamisch scannen und manipulieren, indem man eine bestimmte Schnittstelle in Golang implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage