Go Academy · Les

Interne werking van maps

Hoe maps gegevens opslaan

Les 1 van 413 stappen

Interne werking van maps is een gratis Go Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

Wat is een map

Een map slaat sleutel-waardeparen op. Elke sleutel verwijst naar één waarde en opzoeken is gemiddeld zeer snel.

In Go schrijf je map[KeyType]ValueType.

package main

import "fmt"

func main() {
	ages := map[string]int{"Ann": 30, "Bob": 25}
	fmt.Println(ages["Ann"])
}

Hashtabellen onder de motorkap

Go-maps zijn geïmplementeerd als hashtabellen. Een hashfunctie zet elke sleutel om in een getal dat verwijst naar een bucket waarin de waarde staat.

Buckets

De map slaat vermeldingen op in buckets. Elke bucket bevat meerdere sleutel-waardeparen. De hash van een sleutel bepaalt naar welke bucket die gaat, wat gemiddeld snelle zoekacties met O(1) oplevert.

Aanmaken met make

Je kunt een lege map maken met make. Je kunt optioneel een groottehint meegeven om vooraf ruimte toe te wijzen.

package main

import "fmt"

func main() {
	scores := make(map[string]int)
	scores["x"] = 10
	fmt.Println(scores)
}

Nil-maps

Een map die zonder initialisatie is gedeclareerd, is nil. Je kunt uit een nil-map lezen (je krijgt nulwaarden), maar schrijven naar een nil-map veroorzaakt een runtime-paniek. Initialiseer de map altijd voordat je erin schrijft.

package main

import "fmt"

func main() {
	var m map[string]int
	fmt.Println(m == nil)
	fmt.Println(m["missing"])
}

Toevoegen en bijwerken

Een waarde aan een sleutel toewijzen voegt die sleutel toe als hij nieuw is, of overschrijft de bestaande waarde.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1}
	m["b"] = 2
	m["a"] = 99
	fmt.Println(m)
}

Sleutels verwijderen

De ingebouwde functie delete verwijdert een sleutel. Een ontbrekende sleutel verwijderen is veilig en heeft geen effect.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2}
	delete(m, "a")
	fmt.Println(m)
}

Lengte van een map

len geeft het aantal sleutel-waardeparen terug dat momenteel in de map staat.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	fmt.Println(len(m))
}

Maps groeien automatisch

Terwijl je vermeldingen toevoegt, vergroot Go de onderliggende tabel en kan het sleutels opnieuw hashen naar nieuwe buckets. Dit gebeurt automatisch, dus je hoeft de capaciteit niet handmatig te beheren.

Toegestane sleuteltypen

Sleutels moeten vergelijkbaar zijn: het moeten typen zijn die je met == kunt gebruiken. Strings, getallen, booleans en structs met vergelijkbare velden werken. Slices en maps kunnen geen sleutels zijn.

package main

import "fmt"

func main() {
	type Point struct{ X, Y int }
	m := map[Point]string{{1, 2}: "origin-ish"}
	fmt.Println(m[Point{1, 2}])
}

Referentiesemantiek

Een mapwaarde is een verwijzing naar de onderliggende gegevens. Als je een map aan een functie doorgeeft, kan die functie dezelfde map wijzigen; je hebt daarvoor geen pointer nodig.

package main

import "fmt"

func addOne(m map[string]int) {
	m["count"]++
}

func main() {
	m := map[string]int{"count": 0}
	addOne(m)
	fmt.Println(m)
}

Snelle controle

Wat gebeurt er als je naar een nil-map probeert te schrijven?

Samenvatting

Interne werking van maps:

  • Maps zijn hashtabellen met buckets
  • Gemiddeld O(1) voor opzoeken, invoegen en verwijderen
  • Sleutels moeten vergelijkbaar zijn; schrijven naar nil-maps veroorzaakt een runtime-paniek
  • Maps hebben referentiesemantiek
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Interne werking van maps” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “Interne werking van maps”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “Interne werking van maps”?

Hoe maps gegevens opslaan Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Interne werking van maps”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Interne werking van maps
  2. Bestaan controleren
  3. Maps als sets
  4. Iteratie en ordening
← Terug naar Go Academy