以下代码:
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
)?
答案 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")
}