Golang接口多态如何实现

Go语言通过接口实现多态,无需类和继承。定义Shape接口包含Area方法,Rectangle和Circle结构体分别实现该方法,计算各自面积。PrintArea函数接收Shape接口类型,运行时根据实际传入的类型调用对应Area实现,输出相应结果。这种隐式接口实现机制使不同类型可被统一接口调用,体现多态性。

golang接口多态如何实现

Go语言中没有传统面向对象语言中的“类”和“继承”,但通过接口(interface)和方法集的机制,自然支持多态。多态的本质是:同一个接口可以被不同的类型实现,调用相同的方法名时,会根据实际类型执行不同的逻辑。

接口定义行为

在Go中,接口是一组方法签名的集合。任何类型只要实现了这些方法,就自动实现了该接口,无需显式声明。

例如,定义一个Shape接口:

type Shape interface {    Area() float64}

这个接口要求实现一个Area()方法,返回面积值。

立即学习“go语言免费学习笔记(深入)”;

不同类型实现同一接口

让Rectangle和Circle分别实现Shape接口:

 v2.0推券客淘客优惠券程序 v2.0推券客淘客优惠券程序

推券客cms采用thinkphp为内核框架开发,安全稳定高效。不需要任何淘宝API接口,不需要任何淘宝API接口,每天自动更新七万多带内部优惠券的商品,轻松实现超高佣金。

 v2.0推券客淘客优惠券程序 156 查看详情  v2.0推券客淘客优惠券程序

type Rectangle struct {    Width, Height float64}

func (r Rectangle) Area() float64 {return r.Width * r.Height}

type Circle struct {Radius float64}

func (c Circle) Area() float64 {return 3.14 c.Radius c.Radius}

虽然结构不同,但都实现了Area()方法,因此都可以赋值给Shape接口变量。

运行时动态调用

接口变量在运行时保存具体类型的值和方法,调用方法时会自动找到对应实现:

func PrintArea(s Shape) {    fmt.Printf("Area: %.2fn", s.Area())}

// 使用示例r := Rectangle{3, 4}c := Circle{5}

PrintArea(r) // 输出: Area: 12.00PrintArea(c) // 输出: Area: 78.50

函数PrintArea接收的是接口类型,但传入不同具体类型时,调用的Area()方法各不相同,这就是多态的体现。

基本上就这些。Go通过接口与隐式实现的方式,让多态变得简洁而自然,不需要继承体系,只要方法匹配就能多态调用。

以上就是Golang接口多态如何实现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1146275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CSS :hover 样式失效的原因及解决方法是什么
上一篇 2025年12月2日 19:26:57
科幻玄学游戏《宇宙灯塔》Steam全球首次公开
下一篇 2025年12月2日 19:27:04

相关推荐

发表回复

登录后才能评论
关注微信