您的位置 首页 编程知识

Go 语言接口实现:方法字面量一致性如何体现?

go 语言接口实现与方法字面量一致性 在 go 语言中,接口定义了一组方法集合,要实现接口,具体类型必须提供与…

Go 语言接口实现:方法字面量一致性如何体现?

go 语言接口实现与方法字面量一致性

在 go 语言中,接口定义了一组方法集合,要实现接口,具体类型必须提供与接口声明中字面量一致的方法。

例如,存在以下接口和类型:

product 接口

type product interface {     getinfo() string }
登录后复制

producta 类型,实现了 product 接口

type producta struct {     name string }  func (p *producta) getinfo() string {     return p.name }
登录后复制

creator 接口

type creator interface {     produce() product // 接口方法声明返回值为 product 接口类型 }
登录后复制

creatora 类型,未能实现 creator 接口

type CreatorA struct{}  func (c *CreatorA) Produce() *ProductA { // 这样写 CreatorA 并未实现 Creator 接口     return &ProductA{"xxx"} }
登录后复制

尽管 producta 实现了 product 接口,但 func (c *creatora) produce() *producta 却没有实现 creator 接口。只有将代码修改为 func (c *creatora) produce() product 才能实现此接口。

原因在于接口是方法集合的预定义,而具体类型要实现接口,必须严格实现其方法,包括返回值类型的一致性。

在这种情况下,creatora 如果要实现 creator 接口,其 produce 方法必须返回 product 接口,而不是实现了此接口的具体类型 producta。

因此,go 语言中接口的方法实现要求十分严格,实现的方法必须与接口声明中的方法字面量完全一致,包括返回值类型在内。

以上就是Go 语言接口实现:方法字面量一致性如何体现?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/3622.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部