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

时间:2017-02-27 17:30:59

标签: 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))
   }

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

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

2 个答案:

答案 0 :(得分:2)

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

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))
}

没有命名类型:

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))
}

答案 1 :(得分:1)

访问其他软件包:

https://play.golang.org/p/X20RtgpEzqL

package main

import "fmt"

var f = fmt.Println
var p2f = &f

func main() {
    (*p2f)("it works")
}