golang返回函数和赋值

golang返回函数和赋值,go,Go,我要学习“golang返回函数”,但我很困惑。 为什么这个代码返回7? 如何将值指定给y package main import "fmt" func maked(x float64) func(float64) float64 { fn := func(y float64) float64 { return x - y } return fn } func main() { test := maked(12)

我要学习“golang返回函数”,但我很困惑。 为什么这个代码返回7? 如何将值指定给y

package main

import "fmt"

func maked(x float64) func(float64) float64 {

    fn := func(y float64) float64 {
        return x - y

    }
    return fn
}

func main() {
    test := maked(12)

    fmt.Println(test(5))
    // printed 7
}

test:=maked12返回如下函数

   fn := func(y float64) float64 {
        return 12 - y

    }

现在测试有了这个功能。所以test5在y=5的情况下运行上述函数。
所以12-5=7

test5调用test,将5分配给y。您会期望什么?