登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-03-24 13:58:25 136浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《我可以在 Go 中使用反射创建一个新函数吗?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

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

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

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

正确答案

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

您可以通过unsafe软件包进行大量黑客攻击来实现这一目标。但即便如此,这将是一个巨大的痛苦。

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

编辑(2015 年 7 月 23 日):从 Go 1.5 开始,有reflect.FuncOfand reflect.MakeFunc,这正是你想要的。

以上就是《我可以在 Go 中使用反射创建一个新函数吗?》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表