13. Closure-Functions(函数的闭包)

请注意,在Python示例中,您可以在内部函数中访问数字,但不能更改它。假设您想这样做。

注意:您可以使用global语句来解决该问题,例如

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/4/21 13:50
# filename: sample1.py
number = 0


def increment(amount):
    global number
    number += amount


increment(1)
increment(2)
print(number)       //3

13.1. Python

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/4/21 13:50
# filename: sample1.py
def run():
    def increment(amount):
        return number + amount

    number = 0
    number = increment(1)
    number = increment(2)
    print(number)  # 3


run()

13.2. Go

package main

import "fmt"

func main() {

    number := 0

    /* It has to be a local variable like this.
       You can't do `func increment(amount int) {` */
    increment := func(amount int) {
        number += amount
    }
    increment(1)
    increment(2)

    fmt.Println(number) // 3

}