package main import "fmt" func plus(a int, b int) int { return a + b } func plusPlus(a, b, c int) int { return a + b + c } // multiple return values func vals() (int, int) { return 3, 7 } // variadic functions func sum(nums ...int) { fmt.Println(nums, " ") total := 0 for _, num := range nums { total += num } fmt.Println(total) } // Closures func intSeq() func() int { i := 0 return func() int { i++ return i } } // Recursion func fact(n int) int { print(n) print("Recursion") if n == 0 { return 1 } return n * fact(n-1) } func main() { // functions res := plus(1, 2) fmt.Println("1 + 2 =", res) res = plusPlus(1, 2, 3) fmt.Println("1 + 2 + 3 =", res) // multiple return values a, b := vals() fmt.Println(a) fmt.Println(b) _, c := vals() fmt.Println(c) // variadic sum(1, 2, 3, 4, 5, 6) sum(2, 10, 40) sum([]int{5, 10, 10}...) // Closures nextInt := intSeq() fmt.Println(nextInt()) fmt.Println(nextInt()) fmt.Println(nextInt()) newInts := intSeq() fmt.Println(newInts()) // Recursion // Classic recursion example fmt.Println(fact(7)) }