-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
42 lines (36 loc) · 789 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main
import "fmt"
func numberCounter(start int) func() int {
count := start
return func() int {
count++
return count
}
}
// more examples
func debitCardFunction(balance int) func(int) int {
return func(withdrawal int) int {
if balance < withdrawal {
return balance
}
balance -= withdrawal
return balance
}
}
func main() {
counter1 := numberCounter(2)
fmt.Println(counter1())
fmt.Println(counter1())
counter2 := numberCounter(3)
fmt.Println(counter2())
fmt.Println(counter2())
fmt.Println(counter1())
debitCard := debitCardFunction(100)
fmt.Println(debitCard(20))
fmt.Println(debitCard(100))
fmt.Println(debitCard(40))
debitCard2 := debitCardFunction(100)
fmt.Println(debitCard(20))
fmt.Println(debitCard2(90))
fmt.Println(debitCard2(40))
}