Junior — Middle
Cik reizes ir nepieciešams slēgt kanālu Go, lai izvairītos no kļūdām?
sobes.tech AI
Atbilde no AI
Go valodā ir nepieciešams slēgt kanālu tieši vienu reizi, kad vairs nav plānots sūtīt tajā datus. Kanāla vairākas reizes slēgšana izraisīs paniku (runtime panic).
Svarīgi:
- To, kurš raksta kanālā, tam jāaizver, nevis tam, kurš lasa.
- Ja kanāls tiek izmantots datu pārraidīšanai starp gorutīnām, slēgšana signalizē, ka datu vairs nebūs.
Piemērs:
ch := make(chan int)
func() {
defer close(ch) // slēdzam kanālu vienu reizi
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val)
}
Šajā piemērā kanāls tiek slēgts vienu reizi pēc visu vērtību nosūtīšanas.