المهل الزمنية مهمة للبرامج التي تتصل بموارد خارجية، أو
التي تحتاج لسبب آخر إلى تقييد وقت التنفيذ. يسهل تنفيذ المهل
الزمنية في Go بأناقة بفضل القنوات وselect.
packagemain
import("fmt""time")
funcmain(){
لنفترض في مثالنا أننا ننفذ استدعاءً خارجيًا يعيد نتيجته
عبر القناة c1 بعد ثانيتين. لاحظ أن القناة مخزنة مؤقتًا،
ولذلك تكون عملية الإرسال داخل روتين Go غير حاجزة. هذا نمط
شائع لمنع تسرب روتين Go إذا لم تُقرأ القناة قط.
تنفّذ select هنا مهلة زمنية. تنتظر res := <-c1
النتيجة، بينما تنتظر <-time.After إرسال قيمة بعد مهلة
مدتها ثانية واحدة. ولأن select تتابع أول عملية استقبال
تصبح جاهزة، فسننفذ فرع المهلة إذا استغرقت العملية أكثر من
الثانية المسموح بها.