本篇内容主要讲解“GO语言的面向对象详解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GO语言的面向对象详解”吧!
成都创新互联-专业网站定制、快速模板网站建设、高性价比鱼峰网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式鱼峰网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖鱼峰地区。费用合理售后完善,10多年实体公司更值得信赖。前言
有过C++语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,C++中主要是通过this指针来完成的;继承,就是指class之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个class只需要按照接口实现自己的回调函数就可以了。
作为集大成者的Go语言,自然不会在面向对象上面无所作为。相比较C++、Java、C#等面向对象语言而言,它的面向对象更简单,也更容易理解。
go语言中并没有像C++,Java语言中这类的Class,它只含有像C语言中的结构体,用结构体和指针等特性,完成一个类的作用,很巧妙的使用了指针和结构体,不仅是go的面向对象,包括go语言中的map等操作都是借助了结构体。其实,说白了,C++、Java等面向对象的语言中,类的底层实现就是结构体,对象的引用就是指针,只是语言把他们封装起来了而已。然而这使得很多人刚接触面向对象的时候很不理解这些东西。
下面,说所面向对象在go中的写法:
如果我们要再Java中定义一个Rect,可以求其面积,我们应该这么写
public class Rect { public int x; public int y; public int Area() { return x*y; } }
很简单,那么Go语言中怎么做呢?Go中并不存在所谓的类,所有的类都是用结构体表示的,所以要写一个类,我们先得定义一个结构体:
type Rect struct { x, y int }
这是一个Rect的结构体,那么一个类中,不仅要存在变量,还要有成员函数,那么go的成员函数是这么写的:
func (r *Rect) Area() int { return r.x*r.y }
这个成员函数的功能是求面积的,显然,这个成员函数值对Rect的结构体适用,这样就实现了所谓的封装,那么,我们如何去创建并初始化类的实例呢
go语言提供了很多方式:
rect :=new(Rect) rect :=&Rect{} rect :=&Rect{1,2} rect :=&Rect{x:3,y:4}
那么,一遍情况下,如果没有指定成员变量的大小,go语言会默认初始化成员变量为0,bool
类型的为false
。
那么,构造函数呢?
我们可以这么来写:
func NewRect(x,y int) *Rect { return &Rect{x,y} }
其实,这也是我们平时new一个对象时候的真正操作,只是go把他真正展现给我们了。
看到这里,我们似乎还有一个疑问,那就是,像java、C++中对于可见性的描述呢,go语言中不存在public
等关键字,go语言中直接选择用字母大小写控制。
一个变量以大写字母开头则表示对其他包可见,如果想要不可见,那么使用小写字母即可,但是go语言中的可见性控制只是针对包的,并不针对类,也就是,同一个包下的类都是可见的。这个时候我们就可以知道了为什么输出语句是这样写的了吧:
fmt.Println("hello world")
因为此函数对其他包是可见的。
到此,相信大家对“GO语言的面向对象详解”有了更深的了解,不妨来实际操作一番吧!这里是创新互联成都网站设计公司网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:GO语言的面向对象详解-创新互联
分享网址:https://www.cdcxhl.com/article46/cosdeg.html
成都网站建设公司_创新互联,为您提供全网营销推广、用户体验、动态网站、小程序开发、品牌网站建设、电子商务
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联