Recursion
Go언어는 재귀함수(Recursive Function)를 지원 합니다.
고전적인 예제인 팩토리얼값을 구하는 예제로 설명하겠습니다.    
package main
import "fmt"
func fact(n int) int {         // [1]
    if n == 0 {
        return 1
    }
    return n * fact(n - 1)
}
func main() {
    fmt.Println(fact(7))
}
fact()함수는 함수 내부에서 다시 자기 자신을 호출하고 있습니다.fact(0)함수를 호출할때까지 계속해서 자기자신을 재귀적으로 호출합니다.
실행하면 다음과 같습니다.
$ go run recursion.go 
5040