Vererbung in Go
Jun 5, 2016 · 1 minute read · Commentsgolangnotes
Es gibt eine Klasse, welche als Basis für eine Neue Klasse dienen soll. Für dieses Beispiel Car
. Über eine Funktion wird ein Pointer auf eine Instanz erzeugt:
type Car struct {
speed int
name string
}
func (c *Car) Drive (){
fmt.Println("Brum brum")
}
func NewCar() *Car {
car := Car{speed: 100, name: "fastcar"}
return &car
}
Um alle Eigenschaften der ursprünglichen Klasse der neuen Klasse hinzuzufügen fügen wir Car
der neuen Klasse einfach über das struct hinzu. Die Klasse Audi
erbt nun alle Eigenschaften und Methoden von Car
. Wenn wir hierfür auch eine Funktion verwenden wollen, welche eine Referenz auf eine Instanz Audi
erzeugt, dann lässt sich dies auch recht einfach umsetzen. Hierfür setzt man audi.Car = *car
type Audi struct {
Car
}
func NewAudi() *Audi {
car := NewCar()
var audi Audi
audi.Car = *car
audi.name = "Audi"
return &audi
}
https://play.golang.org/p/jo9dByX8sX
Eine praktische Anwendung ist hierbei die Erweiterung der Standardbiliothek.