السلام عليكم
قنوات (Channels) في Golang هي وسيلة للتواصل وتبادل البيانات بين مختلف الجوروتينات (Goroutines). تستخدم القنوات لإرسال القيم من جوروتين إلى آخر بطريقة آمنة متزامنة. الفكرة الأساسية وراء القنوات هي توفير آلية للتحكم في تدفق البيانات بين الجوروتينات بحيث يتم تجنب المشاكل المتعلقة بالتنازلات (Race Conditions) وتجاوز الحجز (Deadlocks).
لإنشاء قناة في Golang، يمكن استخدام الكلمة المفتاحية make مع الدالة chan وتحديد نوع البيانات التي ستنقلها القناة. على سبيل المثال:
package main
import "fmt"
func main() {
// إنشاء قناة تحمل قيم من نوع int
ch := make(chan int)
// إرسال قيمة عبر القناة
go func() {
ch <- 42 // إرسال القيمة 42 عبر القناة
}()
// استقبال القيمة المرسلة عبر القناة
value := <-ch
fmt.Println(value) // الطباعة: 42
}
في هذا المثال، تم إنشاء قناة تحمل قيم من نوع int. ثم تم إرسال قيمة 42 عبر القناة من جوروتين مستقل، وأخيرًا تم استقبال هذه القيمة في الجوروتين الرئيسي.
يمكن استخدام القنوات لتحقيق التواصل بين الجوروتينات في العديد من السيناريوهات، مثل التزامن بين عمليات القراءة والكتابة على البيانات أو تنظيم العمليات المتزامنة بين مختلف الجوروتينات.
تحياتي