Heim > Backend-Entwicklung > Golang > Kann Go Reflection Schnittstellen dynamisch erstellen und implementieren?

Kann Go Reflection Schnittstellen dynamisch erstellen und implementieren?

Susan Sarandon
Freigeben: 2024-12-25 09:40:12
Original
798 Leute haben es durchsucht

Can Go Reflection Dynamically Create and Implement Interfaces?

Kann Reflection in Go die Erstellung und Implementierung dynamischer Schnittstellen erleichtern?

Mithilfe von Schnittstellen in Go kann man Schnittstellen im RPC-Stil definieren. Für einen bestimmten Dienst könnte eine Schnittstelle wie die folgende erstellt werden:

type MyService interface {
    Login(username, password string) (sessionId int, err error)
    HelloWorld(sessionId int) (hi string, err error)
}
Nach dem Login kopieren

Das Ziel besteht darin, Reflexion zu nutzen, um diese Schnittstelle zu realisieren, indem Methodenaufrufe in RPC-Aufrufe umgewandelt, Eingabeparameter gemarshallt und Ergebnisse entmarshallt werden. Während es möglich ist, Reflektion zu verwenden, um eine []Schnittstelle{} von Eingabeparametern für Dienstaufrufe zu erhalten, bleibt die Erstellung eines Werts, der eine Schnittstelle mithilfe reflexionsbasierter Funktionen dynamisch implementiert, schwer zu erreichen.

Einschränkungen und Alternativen Ansätze

Es ist nicht möglich, durch Reflektion einen Typ mit angehängten Methoden zu generieren und anschließend ein Objekt dieses Typs zu instanziieren. Obwohl die Verwendung des unsicheren Pakets theoretisch machbar ist, wäre es ein mühsames Unterfangen.

Stattdessen würde die Bereitstellung zusätzlichen Kontexts zu dem Problem, das Sie angehen möchten, es der Community ermöglichen, alternative Lösungen vorzuschlagen.

Update (23. Juli 2015)

Go 1.5 führte Reflect.FuncOf und ein reflektieren.MakeFunc, die die gewünschte Funktionalität bereitstellen.

Das obige ist der detaillierte Inhalt vonKann Go Reflection Schnittstellen dynamisch erstellen und implementieren?. 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