当前位置: 首页 > 面试题库 >

我可以在Go中使用反射功能来创建新功能吗?

慕胡媚
2023-03-14
问题内容

我有一个在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.FuncOfreflect.MakeFunc,它们可以完全满足您的要求。



 类似资料:
  • 本文向大家介绍SQL 创建一个新功能,包括了SQL 创建一个新功能的使用技巧和注意事项,需要的朋友参考一下 示例 本示例创建一个名为FirstWord的函数,该函数接受varchar参数并返回另一个varchar值。

  • 问题内容: 我必须为具有相似签名和返回值(一个对象和一个错误)的多个函数编写单元测试,这些函数必须通过相似的测试条件。 我想避免写: (见本去操场例子更完整的上下文) (是的,去游乐场还不支持,只有和问题6511是有没有要求该功能) 为了只编写一个测试,您将 如何使用反射(包): 依次调用每个函数? 测试他们的返回值? 但是我想念一个完整的示例来调用函数并在测试中使用返回的值。 问题答案: 一旦我

  • 我分组和分区流如下: 有没有办法把这两者结合起来?我尝试将两者结合使用,并在PartionBy中使用groupingBy,但没有成功。有什么建议吗? 预期的结果是将这些人与以P开头的人分开,并按年龄分组。以下是人员名单:

  • 我想在我当前的预订表上实现创建客户和保存卡的功能。目前它只登记付款,不登记客户。我已经尝试过实现这一点https://stripe.com/docs/saving-cards但是运气不好。 以下是我的插件支付集成:

  • 问题内容: 如果我有一个实用函数,我希望能够从我的声明内的任何地方调用。是否可以在模块设置中使它全局访问,还是需要将其添加到每个控制器的作用域中? 问题答案: 基本上,您有两个选择,要么将其定义为服务,要么将其放在根范围内。我建议您使用它来提供服务,以避免污染根范围。您创建一个服务,并使其在控制器中可用,如下所示: 如果那不是您的选择,则可以将其添加到根范围中,如下所示: 这样,您所有的模板都可以

  • 我想编写一个应用程序来使用netconf配置网元,我正在寻找一个开源的netconf客户端来实现它。 我已经尝试并成功地使用Jnc做到了这一点。问题是jnc不支持netconf 1.1,我正在寻找另一种解决方案。 是否可以通过opendaylight使用相同的功能?在jnc中,我将Yang文件转换为java类,填充它们,然后配置设备。对于相同的功能,我应该在opendaylight中执行哪些步骤?