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