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
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:
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.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageFunctioneert als waarden
Functies zijn eersteklaswaarden: u kunt ze toewijzen, doorgeven en geef ze terug. We gaan dieper in op de les over sluitingen.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main en init: twee speciale namen
func main()is het startpunt van hetmainpakket. 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
Definieer een functie sum(a, b int) int die a+b retourneert, en roep deze vervolgens in main aan met (3, 4).
Toon hint
Gedeeld type: `(a, b int)`. Het retourtype gaat NA de haakjes.
Oplossing beschikbaar na 3 pogingen
Definieer greet(name string) (geen retourwaarde) die 'ciao <naam>' afdrukt.
Toon hint
Geen retourtype als de functie niets retourneert.
Oplossing beschikbaar na 3 pogingen
Waar gaat het parametertype naartoe in Go?
func f(? ?) {}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).
maineninitzijn gereserveerde namen met speciale semantiek.