Sobes.tech
Junior — Middle

Şu anda öğe içermeyen bir kanaldan veri okumaya çalışırsanız ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, şu anda öğe içermeyen bir kanaldan okumaya çalışırsanız, davranış kanalın türüne bağlıdır:

  • Bufferli kanal: buffer boşsa, okuma bloklanır, kanal üzerine bir öğe yazılana kadar.
  • Buffersiz kanal: okuma, başka bir goroutine değer göndere kadar bloklanır.

Bu nedenle, boş bir kanaldan okuma, veri gelene veya kanal kapatılana kadar mevcut goroutine'i engeller.

Örnek:

ch := make(chan int)

// Boş bir kanaldan okuma, yürütmeyi engeller
val := <-ch // birisi değer göndermediği sürece bloklanır

// Bloklamayı önlemek için, default ile select kullanılabilir
select {
case val := <-ch:
    fmt.Println("Alındı", val)
default:
    fmt.Println("Kanalde veri yok")
}