Go:是否可以返回指向函数的指针

pin*_*ker 4 pointers go

对于以下代码:

package main

import "fmt"

type intFunc func(int) int

var t = func() intFunc {
        a := func(b int) int { return b}
        return a
    }

func main() {
    fmt.Println(t()(2))
   }
Run Code Online (Sandbox Code Playgroud)

有没有办法返回指向函数的指针而不是直接返回函数?(就像是return &a)?

游乐场在这里: https: //play.golang.org/p/IobCtRjVVX

Jim*_*imB 6

是的,只要你正确转换类型:

https://play.golang.org/p/3R5pPqr_nW

type intFunc func(int) int

var t = func() *intFunc {
    a := intFunc(func(b int) int { return b })
    return &a
}

func main() {
    fmt.Println((*t())(2))
}
Run Code Online (Sandbox Code Playgroud)

并且没有命名类型:

https://play.golang.org/p/-5fiMBa7e_

var t = func() *func(int) int {
    a := func(b int) int { return b }
    return &a
}

func main() {
    fmt.Println((*t())(2))
}
Run Code Online (Sandbox Code Playgroud)