首页 > 后端开发 > Golang > Go反射可以动态创建和实现接口吗?

Go反射可以动态创建和实现接口吗?

Susan Sarandon
发布: 2024-12-25 09:40:12
原创
805 人浏览过

Can Go Reflection Dynamically Create and Implement Interfaces?

Go 中的反射可以促进动态接口的创建和实现吗?

利用 Go 中的接口,可以定义 RPC 风格的接口。对于特定服务,可能会创建如下接口:

type MyService interface {
    Login(username, password string) (sessionId int, err error)
    HelloWorld(sessionId int) (hi string, err error)
}
登录后复制

目标是利用反射通过将方法调用转换为 RPC 调用、编组输入参数和解组结果来实现此接口。虽然使用反射获取服务调用的输入参数的 []interface{} 是可行的,但使用基于反射的函数创建动态实现接口的值仍然难以实现。

限制和替代方案方法

不可能通过反射生成带有附加方法的类型并随后实例化该类型的对象。虽然使用不安全的包在理论上是可行的,但这将是一项艰巨的任务。

相反,提供有关您试图解决的问题的更多背景信息将使社区能够提出替代解决方案。

更新(2015年7月23日)

Go 1.5引入了reflect.FuncOf和Reflect.MakeFunc,提供所需的功能。

以上是Go反射可以动态创建和实现接口吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板