go 闭包中的变量捕获 和 php闭包中的变量捕获

版权声明: https://blog.csdn.net/qq_29785317/article/details/81276716

go闭包中的变量捕获 传递的是变量的引用 如下面示例:

package main

import "fmt"

func main(){
    a := 10
    func(){
        a = 20
        fmt.Println("inside a is :",a)
    }()
    fmt.Println("outside a is :",a)
}

//output: inside a is : 20
//        outside a is : 20

但是在php中不是这样,这跟php中的变量作用域有关

<?php
function test(){
    $a = 10;

    $b = function () use ($a){  //如果不用use,则会报 $a undefined
        echo $a.'---------';
        $a = 20;
        echo $a;
    };
    $b();
     echo '---------'.$a;
}
test();
//output: 10-----20----10

最近正在学go,两者比较着学会容易转换一点,加油~

猜你喜欢

转载自blog.csdn.net/qq_29785317/article/details/81276716