Programmeren in Go/Types
In Go kan je verschillende soorten types aanmaken. Types zijn niet hetzelfde als types in andere programmeertalen.
Soort type Eigenschap Type van een al bestaand type Nieuwe naam voor type, mogelijk uitbreiden met methodes. Interface Beschrijft methodes. Wordt gebruikt om meerdere implementaties van een systeem mogelijk te maken. Struct Vormt structuur van geheugen (velden en methoden). Lijkt een beetje op een klasse uit andere talen maar heeft niet precies dezelfde functie. Je kan instanties van dit type aanmaken.
Type van een type
type Dag int type Kracht float type Mensen []string // Uitbreiden met methodes func (d Dag) DagNaarJaar() int { return d / 365 + 1 } func (k Kracht) KrachtNaarGewichtAarde() float { return k / 9.81 }
Interface
type Honden interface { // Specificatie interface Rennen(h *Hond) // *Voer betekent verwijzing naar object met type Voer Eten(h *Hond) bool } func (h *Hond) Rennen() { // Methode, kan ook zonder specificatie // *Hond is recievertype, kan voor elk type h.ren = true } func (h *Hond) Eten(v Voer) bool { // Nog een methode if (h.ren || v == PrutUitBlik) { return false } return true }
Struct
type Hond struct { x,y int ren bool } type Voer int; const ( Brokken Voer = iota // iota is een enumerator. Standaard 0, 1, 2 enzovoort Vlees PrutUitBlik ) func main(){ monty := &Hond{5, 2, false} // Verwijzing naar hond monty.Rennen() fmt.Print(monty.Eten(Brokken)) // Wat wordt dit? }