Typaliase vs. Typdefinitionen
In Go können Typdeklarationen in zwei Kategorien eingeteilt werden: Aliasdeklarationen und Typdefinitionen. Das Verständnis dieser Unterscheidung ist entscheidend, um das merkwürdige Verhalten von Typaliasen wie durWithoutMethods und sameAsDuration zu verstehen.
Alias-Deklarationen
Alias-Deklarationen erstellen lediglich einen neuen Bezeichner für einen vorhandenen Typ. Dieser neue Bezeichner ist mit dem ursprünglichen Namen austauschbar. Geben Sie beispielsweise dur = time.Duration ein, um einen Alias für time.Duration zu erstellen. Die Verwendung von dur und time.Duration zum Deklarieren von Variablen führt zu identischem Verhalten.
Typdefinitionen
Im Gegensatz dazu erstellen Typdefinitionen neue Typen. Sie entfernen alle Methoden vom zugrunde liegenden Typ. Das bedeutet, dass, wenn Sie einen Typtyp x struct { y time.Duration } definieren, x keine Methoden von time.Duration erbt. Dies liegt daran, dass time.Duration ein Rohtyp ist, ein Typ ohne angehängte Methoden.
Anwenden auf die Beispiele
Das obige ist der detaillierte Inhalt vonWann unterscheiden sich Typaliase und Typdefinitionen in Go in der Methodenvererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!