Sobes.tech
Middle+

Ki kell zárnia a csatornát?

sobes.tech MI

Válasz az MI-től

A csatornát létrehozónak be kell zárnia azt, és nem szándékozik több adatot küldeni bele. Ez fontos annak érdekében, hogy elkerüljük a pánikot, amikor megpróbálunk adatokat küldeni egy lezárt csatornára, és hogy a fogadók helyesen tudják meghatározni az adatfolyam végét.

Fő szabályok:

  • A küldő akkor zárja be a csatornát, amikor már nem fog értékeket küldeni.
  • A fogadóknak nem szabad bezárniuk a csatornát.
  • A csatorna bezárása jelzi a fogadóknak, hogy több adat nem lesz.

Példa:

func producer(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // A csatorna bezárása az összes adat küldése után
}

func consumer(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Amikor a csatorna zárva van, a ciklus befejeződik
}

func main() {
    ch := make(chan int)
    go producer(ch)
    consumer(ch)
}