Middle+
Kādās situācijās kanāla lasīšana tiks uz visiem laikiem bloķēta? Kas notiks, ja rakstīsiet nil-kanālā? Rakstot slēgtā kanālā?
sobes.tech AI
Atbilde no AI
-
Lasīšana no kanāla tiks bloķēta uz visiem laikiem, ja kanāls ir tukšs un neviens neplāno tajā rakstīt (piemēram, visi sūtītāji ir slēgti vai nav).
-
Rakstīšana uz nil-kanālu (kanāls, kas ir vienāds ar nil) vienmēr tiks bloķēta uz visiem laikiem, jo nil-kanāls nav inicializēts un nevar pieņemt datus.
-
Rakstīšana uz slēgtu kanālu izraisa paniku (panic) Go valodā, jo tas ir aizliegts un uzskatāms par izpildes kļūdu.
Piemērs:
var ch chan int // nil-kanāls
// <-ch // lasīšana no nil-kanāla tiks bloķēta uz visiem laikiem
// ch <- 1 // rakstīšana uz nil-kanāla tiks bloķēta uz visiem laikiem
ch = make(chan int)
close(ch)
// ch <- 2 // panic: sūtījums uz slēgtu kanālu