Structs
Structs sind besondere Typen, die zusammengehörige Attribute in einem Typ zusammenfassen. Man denke beispielsweise an das Autoquartett aus der Kindheit, bei dem auf jeder Karte dieselben Werte standen (zumindest so in etwa):
type fahrzeug struct {
name string
hubraum int
ps int
kmh int
baujahr int
}
Die Werte auf jeder Karte kann dann in einer Instanz dieses Typs gespeichert
werden. In diesem Fall ist fahrzeug
ein Typ, dem Werte zugewiesen werden
können.
Eine struct
erzeugt man auf zwei verschiedene Weisen. Die einfachste
Möglichkeit ist folgende:
f := fahrzeug{}
nun kann man mit dem Punkt-Operator (.) auf Felder der Struktur zugreifen:
f.hubraum = 1558
Alternativ kann man eine Struktur auch mit new()
erzeugen:
f := new(fahrzeug)
Die Variable f
enthält nun einen Zeiger auf die eigentlichen Daten.
In der Praxis werden structs sehr häufig benutzt, weil man Funktionen definieren kann, die nur auf einer konkreten Instanz funktionieren:
func (fz fahrzeug) berechneWert() int {
// nur ein Beispiel
// man kann auf die Instanz von Fahrzeug
// mit der frei wählbaren Variablen in
// den Klammern zugreifen, hier: fz
return fz.baujahr * fz.hubraum
}
Diese Funktion wird wie folgt aufgerufen:
wert = f.berechneWert()