Sobes.tech
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