Junior — Middle
İş parçaları veya goroutine'ler arasında veri alışverişi için kanalların ne zaman ve nasıl kullanıldığına dair bir örnek verebilir misin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da kanallar, goroutine'ler arasında güvenli veri alışverişi yapmak, onları senkronize etmek ve değerleri iletmek için kullanılır.
Bir kanalı, bir goroutine'den diğerine sayı iletmek için kullanma örneği:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // kanala veri gönder
time.Sleep(time.Millisecond * 500)
}
close(ch) // tüm veriler gönderildikten sonra kanalı kapat
}
func consumer(ch chan int) {
for val := range ch { // kanaldan veri al
fmt.Println("Alındı:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Burada, producer sayıları kanala gönderir ve consumer onları okur. Kanallar, mutex veya diğer senkronizasyon mekanizmaları kullanmaya gerek kalmadan güvenli veri iletimini sağlar.