package main
import (
"fmt"
)
type iAdder func(int) (int, iAdder)
func adder2(base int) iAdder {
return func(v int) (int, iAdder) {
return base + v, adder2(base + v)
}
}
func main() {
a:=adder2(0)
for i:=0;i<10;i++{
var s int
s, a=a(i)
fmt.Printf("%T\n",a)
fmt.Println(s)
}
}
// i = 0
// s,a=a(0)
// s,a = 0+0, adder2(0,0) -> 0,adder2(0) 即 base = 0
// i = 1
// s,a=a(1)
// s,a = 0+1,adder2(1) -> 1,adder2(1) 即 base=1
// i = 2
// s,a=a(2)
// s,a = 1+2, adder2(3) -> 3,adder2(3) 即 base=3
// i = 3
// s,a=a(3)
// s,a = 3+3, adder2(6) -> 6,adder2(6) 即 base=6
// ...
// 以此类推
// 最终可以得到
// i = 9
// s,a=a(9)
// s,a = 36+9, adder2(45) ->45,adder2(45) 即 base=45
网友评论