Heim >Backend-Entwicklung >Golang >Können anonyme Schnittstellenimplementierungen in Go erreicht werden?
Go ermöglicht die Definition benutzerdefinierter Typen mithilfe von Schnittstellen. Es stellt sich jedoch die Frage, ob es möglich ist, eine anonyme Implementierung einer Schnittstelle für Situationen zu etablieren, in denen bestimmte Funktionen als einfache Operationen implementiert werden müssen.
Der Pseudocode Zur Verfügung gestellt schlägt die Erstellung einer anonymen Implementierung vor, ähnlich wie:
RandomNumOp({ Binary: func(a, b int) int { return a + b }, Ternary: func(a, b, c int) int { return a + b + c }, })
Dieser Ansatz ist jedoch in Go nicht direkt umsetzbar weil Methodendeklarationen auf Dateiebene definiert werden müssen. Um eine Schnittstelle mit mehreren Methoden zu implementieren, sind daher explizite Methodendeklarationen erforderlich.
Um eine funktionsfähige Implementierung zu erhalten, können Sie eine vorhandene Struktur verwenden oder eine „Dummy“-Implementierung erstellen betonen das Fehlen von Konsequenzen. Hier ist ein Beispiel:
type DummyOp struct{} func (DummyOp) Binary(_, _ int) int { return 0 } func (DummyOp) Ternary(_, _, _ int) int { return 0 }
Alternativ können Sie einen Delegator-Strukturtyp in Betracht ziehen, der es Ihnen ermöglicht, dynamisch Funktionen für die Methoden bereitzustellen:
type CustomOp struct { binary func(int, int) int ternary func(int, int, int) int } func (cop CustomOp) Binary(a, b int) int { if cop.binary != nil { return cop.binary(a, b) } return 0 } func (cop CustomOp) Ternary(a, b, c int) int { if cop.ternary != nil { return cop.ternary(a, b, c) } return 0 }
Beispielverwendung:
RandomNumOp(CustomOp{ binary: func(a, b int) int { return a + b }, })
Wenn Ihre Implementierung keine funktionalen Methoden erfordert, können Sie eine anonyme Methode verwenden Strukturliteral:
var op NumOp = struct{ NumOp }{}
Das obige ist der detaillierte Inhalt vonKönnen anonyme Schnittstellenimplementierungen in Go erreicht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!