تدعم لغة Go الدوال التكرارية. إليك مثال كلاسيكي لحساب المضروب (factorial).
package main
import "fmt"
هذه دالة fact تستدعي نفسها حتى تصل إلى الحالة الأساسية (base case) وهي fact(0).
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
fmt.Println(fact(7))
يمكن للدوال المجهولة أيضاً أن تكون تكرارية، ولكن هذا يتطلب التصريح صراحة عن متغير باستخدام var لتخزين الدالة قبل تعريفها.
var fib func(n int) int
fib = func(n int) int {
if n < 2 {
return n
}
بما أن fib تم التصريح عنها مسبقاً في main تعرف Go أي دالة يجب استدعاؤها باستخدام fib هنا.
return fib(n-1) + fib(n-2)
}
fmt.Println(fib(7))
}
تشغيل البرنامج:
$ go run recursion.go
5040
13 المثال التالي: المؤشرات (Pointers).