Direct naar de hoofdinhoud
Module 3 · Les 1 van 511/50 in de cursus~10 min
Modulelessen (1/5)

Handtekening en parameters

In Go worden functies gedeclareerd met func. De syntaxis van de handtekening verschilt van C/Java: het type komt na de parameternaam, gescheiden door een ruimte. Het is een keuze die beter hardop leest — in plaats daarvan "n van type int". van "int n".

Basissyntaxis

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

Een functie zonder retourwaarde laat eenvoudigweg het retourtype weg.

Opeenvolgende parameters van hetzelfde type

Als meerdere opeenvolgende parameters hetzelfde type delen, kunt u declareren bij de laatste maar één keer. Het is idiomatisch en je ziet het overal:

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

Geëxporteerde versus niet-geëxporteerde functies

In Go wordt de zichtbaarheid bepaald door de naam: identifiers die beginnen met een hoofdletter worden geëxporteerd (zichtbaar vanuit andere pakketten), de anderen zijn privé voor het pakket.

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

Functioneert als waarden

Functies zijn eersteklaswaarden: u kunt ze toewijzen, doorgeven en geef ze terug. We gaan dieper in op de les over sluitingen.

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main en init: twee speciale namen

  • func main() is het startpunt van het main pakket. Geen argumenten, geen retourwaarden.
  • func init() wordt automatisch aangeroepen bij het opstarten van het pakket (zelfs meerdere keer als meerdere bestanden er één definiëren). Handig voor installatie; gebruik het spaarzaam.

Probeer het

Oefening#go.m3.l1.e1
Pogingen: 0Laden…

Definieer een functie sum(a, b int) int die a+b retourneert, en roep deze vervolgens in main aan met (3, 4).

Editor laden…
Toon hint

Gedeeld type: `(a, b int)`. Het retourtype gaat NA de haakjes.

Oplossing beschikbaar na 3 pogingen

Oefening#go.m3.l1.e2
Pogingen: 0Laden…

Definieer greet(name string) (geen retourwaarde) die 'ciao <naam>' afdrukt.

Editor laden…
Toon hint

Geen retourtype als de functie niets retourneert.

Oplossing beschikbaar na 3 pogingen

Quiz#go.m3.l1.e3
Klaar

Waar gaat het parametertype naartoe in Go?

Go
func f(? ?) {}
Antwoordmogelijkheden

Samenvatten

  • func name(param type, ...) returnType { ... }.
  • Typ achter de naam; opeenvolgende parameters van hetzelfde type → declareer deze slechts één keer.
  • Hoofdletter initiaal = geëxporteerd; kleine letters = privé voor het pakket.
  • Functies zijn eersteklas (toewijsbaar, redelijk).
  • main en init zijn gereserveerde namen met speciale semantiek.