8: 08匿名函式
package main
import "fmt"
type FuncType func(int, int)
func main0801() {
a := 10
b := 20
//在函式內部定義一個匿名函式
//f 函式型別變數 接收函式
var f FuncType
f = func(a int, b int) {
fmt.Println(a + b)
}
f(a, b)
//fmt.Println(f)
}
func main0802() {
//a := 10
//b := 20
// int型別
//v := func(a int, b int) int {
// return a + b
//}(a, b)
//如果定義匿名函式後在{}後面如果有()表示函式呼叫
f := func(a int, b int) int {
return a + b
}
v := f(10, 20)
fmt.Printf("%T\n", f)
fmt.Println(v)
}
func main0803() {
a := 10
b := 20
f := func() int {
return a + b
}
//v := f(a, b)
a = 100
b = 200
v := f()
fmt.Println(v)
}
9: 09遞迴函式
package main
import "fmt"
//遞迴函式 函式呼叫函式本身
//死遞迴
func demo4(n int) {
//在函式中遇到return 表示函式的結束
if n == 0 {
return
}
demo4(n - 1)
fmt.Println(n)
}
func main0901() {
demo4(10)
}
//計算一個數的階乘
var s int = 1
func demo5(n int) {
if n == 1 {
return
}
s *= n//5*4*3*2
demo5(n - 1)
}
func main() {
a := 5
demo5(a)
fmt.Println(s)
}