Sobes.tech
Junior — Middle

Kanalın kapatılması gereken kodun yeri neresidir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da kanal, oluşturulduğu yerde ve artık veri göndermeyi planlamadığınız yerde kapatılmalıdır. Genellikle, bu gönderen tarafından yapılır ve alıcıları, artık veri olmayacağını bildirmek içindir.

Önemli:

  • Alıcılar, okuma sırasında kanalın kapanıp kapanmadığını kontrol edebilir.
  • Kanal yalnızca gönderen tarafından kapatılmalıdır, aksi takdirde panik oluşabilir.

Örnek:

ch := make(chan int)
func() {
    defer close(ch) // tüm veriler gönderildikten sonra kanalı kapat
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // kanal kapanana kadar verileri alır
}