新年学新语言Go之五

编程入门 行业动态 更新时间:2024-10-21 16:06:47

新年学新语言Go<a href=https://www.elefans.com/category/jswz/34/1756029.html style=之五"/>

新年学新语言Go之五

一、前言

Go虽然不算是面向对象语言,但它支持面向对象一些特性,面向接口编程是Go一个很重要的特性,而Go的接口与Java的接口区别很大,Go的接口比较复杂,这里仅用一个最简单例子做介绍,复杂的我也还没学。

二、接口定义与实现简单例子

与定义结构体(struct)类似,上面代码我们定义了Shaper接口,它有一个方法Area,任何实现了这个函数(或方法)的类型我们都认为它实现了Shaper接口。

说明

1、实现接口并不需要显式声明,不用像Java那样用implements实现接口,只需要实现接口中所有方法(函数)就表示实现了该接口。

2、接口可以被结构体(可以理解为长残了的类)实现,也可以被函数类型实现。

3、接口被实现条件 

  • 接口的方法与实现接口类型方法格式要完全一致,包括方法名、参数类型、返回值都需要完全一样。

  • 接口所有方法都被实现。

这点和Java没有什么区别。

4、area := Shaper(rect) 这条语句绑定了接口和结构体,然后就可以调用接口的方法了。

三、多态

面向对象三大特性,封装、继承及多态,Go既然支持了OOP,那多态的特性它肯定也要能支持的,多态简单理解就是在运行时决定使用哪个实现类,我们来看一个简单例子理解一下。

结构体1定义及对接口的实现

结构体2定义及对接口的实现

调用接口的函数会执行对应结构体函数的实现

根据运行时传入的是矩形还是三角形结构体调用对应的实现函数。

注:其实和Java中接口的概念还是比较类似的,Go相对更灵活吧(是指在调用时再去绑定接口和实现?偶还没领悟到灵活在哪?)

更多推荐

新年学新语言Go之五

本文发布于:2023-12-07 01:33:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1669668.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:之五   新年   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!