Sobes.tech
Junior — Middle

Hoe vaak moet je een kanaal in Go sluiten om fouten te voorkomen?

sobes.tech AI

Antwoord van AI

In Go moet een kanaal precies één keer worden gesloten, wanneer je niet van plan bent meer gegevens te sturen. Het meerdere keren sluiten van een kanaal leidt tot een panic (runtime panic).

Belangrijk:

  • Degene die in het kanaal schrijft, moet het sluiten, niet degene die leest.
  • Als het kanaal wordt gebruikt voor gegevensoverdracht tussen goroutines, geeft het sluiten aan dat er geen gegevens meer zullen zijn.

Voorbeeld:

ch := make(chan int)
func() {
    defer close(ch) // sluit het kanaal één keer
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

In dit voorbeeld wordt het kanaal één keer gesloten nadat alle waarden zijn verzonden.