Naar inhoud springen

Programmeren in Go/Types

Uit Wikibooks
Versie door Vangelis (overleg | bijdragen) op 22 feb 2010 om 22:33 (splitsing pagina's)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)

Programmeren in Go

Commentaar
Pakketten
Variabelen en constanten
Assignments
For
Switch
Functies
Defer
Arrays
Slices
Methodes
Types
Goroutines
Channels
Select

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?
}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.