Finish: 03-closures - 闭包
This commit is contained in:
@@ -9,11 +9,11 @@ func exercise1() func(int) int {
|
|||||||
// 该闭包接收一个int参数并返回乘以multiplier的结果
|
// 该闭包接收一个int参数并返回乘以multiplier的结果
|
||||||
|
|
||||||
multiplier := 3
|
multiplier := 3
|
||||||
____ := func(num int) ____ {
|
multifunc := func(num int) int {
|
||||||
return ____
|
return multiplier * num
|
||||||
}
|
}
|
||||||
|
|
||||||
return ____
|
return multifunc
|
||||||
}
|
}
|
||||||
|
|
||||||
func exercise2() func() int {
|
func exercise2() func() int {
|
||||||
@@ -23,14 +23,14 @@ func exercise2() func() int {
|
|||||||
// 每次调用返回的函数时,计数器加1
|
// 每次调用返回的函数时,计数器加1
|
||||||
// 提示:使用匿名函数捕获外部变量
|
// 提示:使用匿名函数捕获外部变量
|
||||||
|
|
||||||
count := ____
|
count := 0
|
||||||
|
|
||||||
____ := func() ____ {
|
countfunc := func() int {
|
||||||
____
|
count++
|
||||||
return ____
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
return ____
|
return countfunc
|
||||||
}
|
}
|
||||||
|
|
||||||
func exercise3() func() int {
|
func exercise3() func() int {
|
||||||
@@ -40,15 +40,15 @@ func exercise3() func() int {
|
|||||||
// 每次调用返回下一个斐波那契数
|
// 每次调用返回下一个斐波那契数
|
||||||
// 数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34...
|
// 数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34...
|
||||||
|
|
||||||
a, b := ____, ____
|
a, b := 0, 1
|
||||||
|
|
||||||
____ := func() ____ {
|
fib := func() int {
|
||||||
result := ____
|
result := a
|
||||||
a, b = ____
|
a, b = b, a+b
|
||||||
return ____
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
return ____
|
return fib
|
||||||
}
|
}
|
||||||
|
|
||||||
func exercise4() func(int) bool {
|
func exercise4() func(int) bool {
|
||||||
@@ -59,13 +59,13 @@ func exercise4() func(int) bool {
|
|||||||
// 检查函数判断输入数字是否在[min, max]范围内
|
// 检查函数判断输入数字是否在[min, max]范围内
|
||||||
|
|
||||||
min := 10
|
min := 10
|
||||||
max := ____
|
max := 20
|
||||||
|
|
||||||
____ := func(num int) ____ {
|
check := func(num int) bool {
|
||||||
return num >= ____ && num <= ____
|
return num >= min && num <= max
|
||||||
}
|
}
|
||||||
|
|
||||||
return ____
|
return check
|
||||||
}
|
}
|
||||||
|
|
||||||
func exercise5(start int) func(int) int {
|
func exercise5(start int) func(int) int {
|
||||||
@@ -75,18 +75,18 @@ func exercise5(start int) func(int) int {
|
|||||||
// 从start开始,每次调用累加参数值
|
// 从start开始,每次调用累加参数值
|
||||||
// 提示:闭包应该能访问外部作用域的变量
|
// 提示:闭包应该能访问外部作用域的变量
|
||||||
|
|
||||||
total := ____
|
total := start
|
||||||
|
|
||||||
____ := func(n int) ____ {
|
adder := func(n int) int {
|
||||||
____
|
total += n
|
||||||
return ____
|
return total
|
||||||
}
|
}
|
||||||
|
|
||||||
return ____
|
return adder
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("=== 闭包 练习 ===\n")
|
fmt.Println("=== 闭包 练习 ===")
|
||||||
|
|
||||||
add3 := exercise1()
|
add3 := exercise1()
|
||||||
fmt.Printf("练习1结果: add3(4) = %d\n", add3(4))
|
fmt.Printf("练习1结果: add3(4) = %d\n", add3(4))
|
||||||
|
|||||||
Reference in New Issue
Block a user