Heim > Backend-Entwicklung > Golang > Wie kann ich benutzerdefinierte Typen in Go erweitern und gleichzeitig vorhandene Methoden beibehalten?

Wie kann ich benutzerdefinierte Typen in Go erweitern und gleichzeitig vorhandene Methoden beibehalten?

Susan Sarandon
Freigeben: 2024-12-07 09:50:11
Original
1068 Leute haben es durchsucht

How Can I Extend Custom Types in Go While Preserving Existing Methods?

Methoden beibehalten und gleichzeitig benutzerdefinierte Typen erweitern

Beim Arbeiten mit benannten Typen für das JSON-Unmarshalling kann es zu Problemen beim Zugriff auf Methoden kommen, die zu gehören zugrunde liegender Typ. Definieren Sie beispielsweise einen benannten Typ StartTime, der von time.Time abgeleitet ist, und versuchen Sie, auf seine Date()-Methode zuzugreifen.

Um diese Einschränkung zu überwinden und Methoden zu einem vorhandenen Typ hinzuzufügen und dabei seine ursprünglichen Methoden beizubehalten, Den vorhandenen Typ einbetten. Einbettungen bieten eine bequeme Möglichkeit, Felder und Methoden von einem eingebetteten anonymen Typ zum neuen Typ hochzustufen.

Zum Beispiel:

type StartTime struct {
    time.Time
}
Nach dem Login kopieren

In diesem Snippet betten wir den Typ „time.Time“ anonym ein innerhalb der Startzeit. Gemäß der Go-Spezifikation für Strukturtypen werden alle Felder und Methoden innerhalb des anonymen Felds heraufgestuft und können direkt über den umschließenden Typ aufgerufen werden.

Jetzt können Sie Date() und alle anderen Zeitmethoden nahtlos aufrufen .Time unter Verwendung von Instanzen von StartTime. Mit diesem Ansatz können Sie benannte Typen mit erweiterter Funktionalität erstellen und gleichzeitig die ursprünglichen Funktionen des Basistyps beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Typen in Go erweitern und gleichzeitig vorhandene Methoden beibehalten?. 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