Heim > Backend-Entwicklung > Golang > Wie konvertiert man eine Funktion in eine Schnittstellenimplementierung?

Wie konvertiert man eine Funktion in eine Schnittstellenimplementierung?

Patricia Arquette
Freigeben: 2024-11-06 18:09:02
Original
455 Leute haben es durchsucht

How to Convert a Function into an Interface Implementation?

Die Funktionsimplementierung einer Schnittstelle verstehen

Einführung

Schnittstellen in der Programmierung definieren eine Reihe von Methoden, die ein Typ haben muss implementieren, um als gültige Schnittstellenimplementierung betrachtet zu werden. Wenn eine Funktion eine Schnittstelle implementiert, muss ihre Methodensignatur mit der Methodensignatur der Schnittstelle übereinstimmen.

Schnittstelle und Implementierung

In diesem Fall haben wir die folgende Schnittstelle:

type Handler interface {
    ServeHTTP(*Conn, *Request)
}
Nach dem Login kopieren

Diese Schnittstelle definiert eine Methode namens ServeHTTP, die einen Conn und einen Request as entgegennimmt Argumente.

Die folgende Implementierung des Counter-Typs erfüllt die Handler-Schnittstelle:

type Counter int

func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
    fmt.Fprintf(c, "counter = %d\n", ctr);
    ctr++;
}
Nach dem Login kopieren

Konvertieren einer Funktion zur Implementierung der Schnittstelle

Manchmal Möglicherweise haben wir eine Funktion, die mit der Signatur der Schnittstellenmethode übereinstimmt, aber nicht direkt als Methode implementiert ist. In solchen Fällen kann die folgende Technik verwendet werden, um die Funktion in eine Schnittstellenimplementierung umzuwandeln:

// Now we define a type to implement ServeHTTP:
type HandlerFunc func(*Conn, *Request)
func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) {
    f(c, req) // the receiver's a func; call it
}
// Convert function to attach method, implement the interface:
var Handle404 = HandlerFunc(notFound);
Nach dem Login kopieren

In diesem Beispiel ist die notFound-Funktion keine Methode, aber sie stimmt mit der Signatur der ServeHTTP-Methode überein. Um es mit der Handler-Schnittstelle kompatibel zu machen, erstellen wir einen HandlerFunc-Typ, der die Funktion in eine Methode einschließt. Dann erstellen wir eine Instanz von HandlerFunc mit notFound als Wert. Diese Instanz, Handle404, implementiert jetzt die Handler-Schnittstelle und kann als gültige Implementierung verwendet werden.

Zusammenfassung

Diese Technik zeigt, wie Funktionen, die die Methodensignatur einer Schnittstelle erfüllen, dies können in Schnittstellenimplementierungen konvertiert werden, auch wenn es sich nicht um Methoden eines benutzerdefinierten Typs handelt. Dieser Ansatz ist besonders nützlich, wenn mit vorhandenen Funktionen gearbeitet wird, die in schnittstellenbasierte Systeme übernommen werden müssen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine Funktion in eine Schnittstellenimplementierung?. 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