Heim > Backend-Entwicklung > Golang > Wie kann ich Methoden zu vorhandenen Typen in Go hinzufügen?

Wie kann ich Methoden zu vorhandenen Typen in Go hinzufügen?

Susan Sarandon
Freigeben: 2025-01-03 10:07:39
Original
778 Leute haben es durchsucht

How Can I Add Methods to Existing Types in Go?

Vorhandene Typen in Go erweitern

Beim Versuch, benutzerdefinierte Methoden zu vorhandenen Typen aus importierten Paketen hinzuzufügen, wird möglicherweise eine Fehlermeldung angezeigt, die darauf hinweist, dass Sie Für nicht-lokale Typen können keine neuen Methoden definiert werden. Diese Einschränkung ergibt sich aus dem Typsystem von Go, das Änderungen an anderswo definierten Typen nicht zulässt.

Um diese Einschränkung zu umgehen, gibt es zwei primäre Ansätze:

  1. Definieren Sie einen neuen Typ mit Anonyme Felder: Dazu gehört die Erstellung eines neuen Typs, der den ursprünglichen Typ als anonyme Felder einbettet. Anschließend können Sie benutzerdefinierte Methoden zu Ihrem neuen Typ hinzufügen.
type MyRoute struct {
    *mux.Route
}

func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}

type MyRouter struct {
    *mux.Router
}

func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Nach dem Login kopieren
  1. Den vorhandenen Typ einbetten: Anstelle der anonymen Einbettung können Sie den vorhandenen Typ explizit mit einbetten das Einbettungsschlüsselwort. Dadurch erhalten Sie Zugriff auf die Felder und Methoden des ursprünglichen Typs und können gleichzeitig zusätzliche Methoden definieren.
type MyRoute embed mux.Route

func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}

type MyRouter embed mux.Router

func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Methoden zu vorhandenen Typen in Go hinzufügen?. 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