为什么我的Go接口方法返回类型会导致编译错误?
Nov 09, 2024 pm 10:38 PM接口方法返回类型作为 Go 中的接口
问题:
实现接口Golang 中返回接口类型的方法可能会导致编译错误。请考虑以下代码:
type IA interface { FB() IB } type IB interface { Bar() string } type A struct { b *B } func (a *A) FB() *B { return a.b } type B struct{} func (b *B) Bar() string { return "Bar!" }
登录后复制
运行此代码会导致以下错误:
cannot use a (type *A) as type IA in function argument: *A does not implement IA (wrong type for FB method) have FB() *B want FB() IB
登录后复制
解决方案:
解决此问题,FB方法的返回类型必须与IA接口中指定的类型匹配。因此,需要进行以下更改:
func (a *A) FB() IB { return a.b }
登录后复制
通过此修改,代码将成功编译,因为 FB 的返回类型现在为 IB,如 IA 接口中所定义。
其他注意事项:
如果 IA 和 IB 接口定义在单独的包中,则包含 IB 的包的导入语句必须包含在实现 FB 方法的文件中。此外,FB 的返回类型必须使用适当的包名称进行限定:
import ( "foo" // Package containing IB interface ) // Implementation in package bar func (a *A) FB() foo.IB { return a.b }
登录后复制
以上是为什么我的Go接口方法返回类型会导致编译错误?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
两个点博物馆:邦格荒地地点指南
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
两个点博物馆:邦格荒地地点指南
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)