Junior — Middle
Welke soorten kanalen worden gebruikt in de Go-taal voor communicatie tussen goroutines?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go worden kanalen (channels) gebruikt voor communicatie tussen goroutines en bestaan ze in verschillende vormen:
-
Gebufferde en niet-gebufferde kanalen
- Niet-gebufferd kanaal — blokkeert de zender totdat de ontvanger de waarde leest.
- Gebufferd kanaal — heeft een interne buffer van vaste grootte, waardoor meerdere waarden zonder blokkering kunnen worden verzonden totdat de buffer vol is.
-
Eénrichtingskanalen
- Kanalen kunnen worden gedeclareerd als alleen voor verzending (
chan<- Type) of alleen voor ontvangst (<-chan Type), wat helpt om het gebruik te beperken en de veiligheid van de code te verhogen.
- Kanalen kunnen worden gedeclareerd als alleen voor verzending (
Voorbeeld van het maken en gebruiken van een gebufferd kanaal:
ch := make(chan int, 2) // buffer voor 2 elementen
ch <- 1 // blokkeert niet
ch <- 2 // blokkeert niet
// ch <- 3 // blokkeert totdat iemand leest
fmt.Println(<-ch) // 1
fmt.Println(<-ch) // 2
Zo zijn de belangrijkste varianten van kanalen in Go gebufferd/niet-gebufferd en éénrichtings/tweedirectioneel.