Sobes.tech
Junior — Middle

Kaip užbaigti darbą su kanalu programoje?

sobes.tech AI

Atsakymas iš AI

Go kalboje, kanalo darbą baigti naudojama funkcija close(). Uždarius kanalą, tai signalizuoja gavėjams, kad daugiau naujų reikšmių nebus siunčiama. Po kanalo uždarymo bandymas į jį siųsti sukels paniką, tačiau skaityti iš uždaryto kanalo yra įmanoma — jis grąžins nulines reikšmes ir false kaip antrą grąžinamąjį parametrą.

Pavyzdys:

ch := make(chan int)
ngo func() {
    ch <- 42
    close(ch) // Uždaryti kanalą po siuntimo
}()

for val := range ch {
    fmt.Println(val) // Išves 42
}

Taigi, norint baigti darbą su kanalu, reikia iškviesti close(channel).