请检查代码


package main

import (

    "fmt"

    "reflect"

)

func main() {


    factory := func  (name string) func(){

        return func (){

            fmt.Println(name)

        }

    }

    f1 := factory("f1")

    f2 := factory("f2")


    pf1 := reflect.ValueOf(f1)

    pf2 := reflect.ValueOf(f2)


    fmt.Println(pf1.Pointer(), pf2.Pointer())

    fmt.Println(pf1.Pointer() == pf2.Pointer())


    f1()

    f2()

}

结果:


4199328 4199328

true

f1

f2

为什么到了闭包函数的同一个地址!或者如何获取唯一地址!