الدالة الإغلاقية (closure) هي دالة تشير إلى متغيرات من النطاق المحيط بها، "تغلق عليها" — الدالة تحتفظ بالوصول إلى تلك المتغيرات حتى بعد أن ترجع الدالة المحيطة. الدوال في Go هي قيم من الدرجة الأولى (first-class values)، مما يجعل الإغلاقات أداة شائعة وقوية.
إغلاق أساسي
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
