请教下反射后类型转换的问题

2020-08-25 11:33:00 +08:00
 solxnp
目前有这样一个需求:
通过配置文件,反射获取目标的方法,但最多只能通过 reflect.ValueOf.MethodByName 或者 reflect.ValueOf.Method 得到一个 reflect.Value 类型,虽然直接调用.Call()能执行此方法,但我想将 reflect.Value 类型转为 func()类型,如 f := func; f() 这样调用,而不是通过 reflect.Value.Call()调用。

先不讨论为什么要如此放屁脱裤子多此一举,就想问问大佬们,能转成 func()类型吗
1483 次点击
所在节点    Go 编程语言
4 条回复
CRVV
2020-08-25 13:47:59 +08:00
https://golang.org/pkg/reflect/#Value.Interface

f := Value.Interface().(func())
f()

也许能用,我没试
Vegetable
2020-08-25 14:03:54 +08:00
f := v.Interface().(func() int)
Vegetable
2020-08-25 14:04:38 +08:00
得注意函数的类型必须包括参数和返回
solxnp
2020-08-25 17:33:32 +08:00
@CRVV @Vegetable 多谢两位大佬,可用。原来要先转回 interface,才能再做类型转换,被自己蠢哭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX