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 }
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!