47 lines
936 B
Go
47 lines
936 B
Go
package learning
|
|
|
|
import "fmt"
|
|
|
|
func adder() func(int) int {
|
|
sum := 0
|
|
return func(x int) int {
|
|
fmt.Println("-------")
|
|
fmt.Printf("Current sum= %d\n", sum)
|
|
fmt.Printf("i= %d\n", x)
|
|
sum += x
|
|
fmt.Printf("New sum= %d\n", sum)
|
|
fmt.Println("-------")
|
|
return sum
|
|
}
|
|
}
|
|
|
|
func ClosuresLearning() {
|
|
pos := adder()
|
|
for i := 0; i < 10; i++ {
|
|
fmt.Println(
|
|
pos(i),
|
|
)
|
|
}
|
|
}
|
|
|
|
func FibonacciLearning() func() int {
|
|
fib_sequence := []int{0, 1}
|
|
var last_element int
|
|
return func() int {
|
|
fmt.Println(fib_sequence)
|
|
|
|
if len(fib_sequence) >= 2 {
|
|
// Get first sum element
|
|
sumOne := fib_sequence[len(fib_sequence)-1]
|
|
// Get second sum element
|
|
sumTwo := fib_sequence[len(fib_sequence)-2]
|
|
fmt.Println(sumOne)
|
|
fmt.Println(sumTwo)
|
|
// sum them up
|
|
last_element = sumOne + sumTwo
|
|
fib_sequence = append(fib_sequence, last_element)
|
|
}
|
|
last_element = fib_sequence[len(fib_sequence)-1]
|
|
return last_element
|
|
}
|
|
}
|