gpt4 book ai didi

reflection - 我可以在 Go 中使用反射创建一个新函数吗?

转载 作者:IT老高 更新时间:2023-10-28 13:08:09 27 4
gpt4 key购买 nike

我有个想法,在 Go 中使用接口(interface)来定义 RPC 风格的接口(interface)。所以对于给定的服务,我可能会创建一个这样的接口(interface):

type MyService interface{
Login(username, password string) (sessionId int, err error)
HelloWorld(sessionId int) (hi string, err error)
}

我想做的是使用反射来实现该接口(interface),将方法调用转换为 RPC 调用,编码输入参数,并将结果解码回方法的输出。我知道如果我可以获得输入参数的 []interface{},我可以使用反射来进行服务调用。但是,我看不到任何方法可以使用反射来动态创建一个值,该值将通过调用我的反射使用函数来实现接口(interface)。有谁知道这样做的方法,即使使用不安全?

最佳答案

您不能通过反射创建带有附加方法的类型,以实例化该类型的对象。

你可以通过 unsafe 包通过大量的黑客攻击来实现这一点。但即便如此,这也是一种巨大的痛苦。

如果您详细说明您要解决的问题,社区可能会提出解决问题的替代方法。

编辑(2015 年 7 月 23 日):从 Go 1.5 开始,有 reflect.FuncOfreflect.MakeFunc,它们完全符合您的要求。

关于reflection - 我可以在 Go 中使用反射创建一个新函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com