使用 Go 中的接口来定义 RPC 风格的接口是一种常见的做法。考虑以下示例:
type MyService interface{ Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
要使用反射实现此接口,您需要将方法调用转换为 RPC 调用,编组输入参数,并将结果解组回方法的输出。
但是,没有直接的方法可以使用反射来创建一个通过调用反射函数来实现接口的值。
不安全的包可能会允许这样的解决方案,但它会非常复杂并且容易出错。不建议采用这种方法。
与其通过反射创建函数,不如考虑探索更符合 Go 设计原则的替代解决方案。解释一下你的具体问题或需要提供更量身定制的建议。
更新:
随着 Go 1.5 中reflect.FuncOf 和reflect.MakeFunc 的引入,它是现在可以根据需要创建带有反射的函数。
以上是Go反射可以创建实现接口的函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!