我有一个在Go中使用接口定义RPC样式接口的想法。因此,对于给定的服务,我可能会创建一个像这样的接口:
type MyService interface{ Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
我想做的是使用反射来实现该接口,将方法调用转换为RPC调用,将输入参数编组,然后将结果编组回方法的输出。我知道,如果可以获取输入参数的[] interface {}接口,则可以使用反射进行服务调用。但是,我看不到有任何方法可以使用反射来动态创建一个值,该值可以通过调用使用反射的函数来实现接口。有人知道即使使用不安全的方法吗?
您无法通过反射通过附加方法创建类型,以实例化该类型的对象。
通过该unsafe软件包,您可能会遇到很多黑客攻击。但是即使那样,这还是一个巨大的痛苦。
unsafe
如果您详细说明了您要解决的问题,那么社区可以提出其他解决方案。
编辑(2015年7月23日):从Go 1.5开始,还有reflect.FuncOf和reflect.MakeFunc,它们可以完全满足您的要求。
reflect.FuncOf
reflect.MakeFunc