为了账号安全,请及时绑定邮箱和手机立即绑定

你如何在go中获得指向类型函数的函数指针?

你如何在go中获得指向类型函数的函数指针?

Go
RISEBY 2021-06-05 08:33:45
以下代码获取指向该函数的指针hello并打印它:package mainimport "fmt"type x struct {}func (self *x) hello2(a int) {}func hello(a int) {}func main() {    f1 := hello    fmt.Printf("%+v\n", f1)    // f2 := hello2    // fmt.Printf("%+v\n", f2)}但是,如果我取消注释底部的部分,则会出现编译错误,说:> ./junk.go:14: undefined: hello2所以我试过:  i := &x{}  f2 := &i.hello2  fmt.Printf("%+v\n", f2)...但错误:> ./junk.go:15: method i.hello2 is not an expression, must be called好的,所以也许我必须直接引用原始类型:  f2 := x.hello2  fmt.Printf("%+v\n", f2)不:> ./junk.go:14: invalid method expression x.hello2 (needs pointer receiver: (*x).hello2)> ./junk.go:14: x.hello2 undefined (type x has no method hello2)这类作品:  i := &x{}  f2 := reflect.TypeOf(i).Method(0)  fmt.Printf("%+v\n", f2)但是,结果f2是reflect.Method,而不是函数指针。:(这里合适的语法是什么?
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

关于 Go 函数调用和闭包的相关阅读:Russ Cox 的“Go 1.1 函数调用”(也详细介绍了 Go1)。

https://docs.google.com/document/d/1bMwCey-gmqZVTpRax-ESeVuZGmjwbocYs1iHplK-cjo/pub


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信