Sobes.tech
Junior — Middle

Kur koda ir nepieciešams slēgt kanālu?

sobes.tech AI

Atbilde no AI

Go kanāls jāaizver tajā vietā, kur tas ir izveidots un kur vairs nav plānots sūtīt datus. Parasti to dara sūtītājs, lai signālizētu saņēmējiem, ka vairs nebūs datu.

Svarīgi:

  • Saņēmēji var pārbaudīt kanāla aizvēršanu, lasot.
  • Tikai sūtītājs drīkst aizvērt kanālu, lai izvairītos no panikas.

Piemērs:

ch := make(chan int)
func() {
    defer close(ch) // aizveram kanālu pēc visu datu nosūtīšanas
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // saņemam datus, kamēr kanāls nav aizvērts
}