Channel در Go سازوکاری برای انتقال داده و هماهنگی میان Goroutineهاست و می‌تواند Buffered یا Unbuffered باشد.

Workerهای پردازش سفارش می‌توانند از Channel مشترک Job دریافت کنند.

در عمل چه چیزی مهم است؟

Channel جایگزین همه Lockها نیست. باید بستن، Cancellation و Backpressure را مدیریت کرد.

انتقال نتیجه با چنل در Go

results := make(chan int)
go func() { results <- 42 }()
value := <-results

Channel برای ارتباط میان گوروتین‌ها استفاده می‌شود. چنل بدون بافر هنگام ارسال و دریافت همگام می‌شود و طراحی نادرست می‌تواند به ددلاک منجر شود.