Sobes.tech
Junior — Middle

Hataları önlemek için Go'da kanalı kaç kez kapatmak gerekir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, bir kanalı tam olarak bir kez kapatmak gerekir, artık ona veri göndermeyi planlamıyorsanız. Kanalı birkaç kez kapatmak, bir panik (runtime panic) ile sonuçlanır.

Önemli:

  • Kanalı yazan kişi kapatmalı, okuyan değil.
  • Kanal, goroutine'ler arasında veri iletimi için kullanılıyorsa, kapatma, artık veri olmayacağını gösterir.

Örnek:

ch := make(chan int)
func() {
    defer close(ch) // kanalı bir kez kapatıyoruz
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

Bu örnekte, kanal tüm değerler gönderildikten sonra bir kez kapatılır.