Senior
Aşağıdaki kod parçacıklarından hangisi kanalarla çalışma ile ilgili hata veya potansiyel sorun içeriyor? Seçenek 1 package main func main() { ch := make(chan int) ch <- 1 } Seçenek 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Seçenek 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Seçenek 4 package main func main() { ch := make(chan int) close(ch) <-ch } Seçenek 5 package main func main() { ch := make(chan int, 3) ch <- 4 }
sobes.tech yapay zeka
AI'dan gelen yanıt
Hata Seçenek 1'de bulunuyor:
package main
func main() {
ch := make(chan int)
ch <- 1
}
Burada, tamponlamayan bir kanal ch := make(chan int) oluşturuluyor. Bu kanala ch <- 1 gönderimi, kanaldan birisi okuyana kadar bloklanır. Bu kodda herhangi bir alıcı olmadığından, program sonsuza kadar takılır (deadlock).
Seçenek 2 doğrudur, çünkü kanal tamponlu ve boyutu 1, ve gönderim, tampon dolu değilse bloklanmaz.
Seçenek 3 de doğrudur: gönderim ve alma dengelidir.
Seçenek 4 doğrudur: Kapanmış bir kanaldan okunabilir, okuma sıfır değeri döner ve bloklanmaz.
Seçenek 5 doğrudur: tampon boyutu 3, bir değer gönderilir, tampon dolmamıştır.
Özetle, sorun sadece Seçenek 1'de — tamponlamayan kanala gönderim sırasında bloklama yaşanması, alıcı olmadan.