Go语言浅尝之方法

栏目: IT技术 · 发布时间: 4年前

内容简介:Hello,各位小伙伴大家好,我是小栈君,因为疫情的缘故,所以今年过了一个非同寻常的年,在这里小栈君也是衷心的希望大家清洗手,多通风,出门记得戴口罩,人多别去凑热闹。安全卫生从你我做起,最重要的是即使呆在家里办公也别忘了学习哦~

Hello,各位小伙伴大家好,我是小栈君,因为疫情的缘故,所以今年过了一个非同寻常的年,在这里小栈君也是衷心的希望大家清洗手,多通风,出门记得戴口罩,人多别去凑热闹。

安全卫生从你我做起,最重要的是即使呆在家里办公也别忘了学习哦~

Go语言浅尝之方法

今天我们继续 go 语言系列分享之方法,对于方法的介绍,相信做过编程的小伙伴或多或少都有了解。

概念

在golang中的方法是作用在特定类型的变量上,因此自定义类型都是可以有方法的,不仅仅只有一个struct 结构体。

方法和函数的区别

但是这里方法和我们之前介绍的函数有什么区别呢?

大致小栈君为大家讲解一下,在函数中并没有对象的概念,因此我们对面向对象的函数叫做方法,但是他们本质上都是function,只是函数并不属于任何一个对象,因此只要符合条件的参数都是可以调用函数。

但是并不适用于方法。因为方法仅限于某一个对象,在后面小栈君会给大家进行实例举例说明。

格式

针对于Go语言中的方法的格式如下:

func (receive type) methodName(args ) (返回参数){}

Go语言浅尝之方法

就拿我们之前讲过的一个例子而言,我们定义的一个car 和一个smallCar 结构体,其中SmallCar继承了Car的属性,理所应当的也继承了相应的方法。

但是小伙伴请注意,我们在定义方法的时候限定了Car,也就是说这一个Run方法除了Car和继承Car的子类,其他对象是无法使用的。如果强行使用编译器会直接报错,具体例子如图所示:

Go语言浅尝之方法

特别注意的一点是,在Go语言中依旧要区分值传递和引用传递,如下图所示:

Go语言浅尝之方法

也就是说在方法中也是区分了这个差别,如果稍微不注意,对于新手的小伙伴来讲很有可能会导致排查半天的问题而不得解。

同样的是方法也是遵循大小写的区别,小写的作用域只限于当前的文件中,对于其他外部需要调用的方法我们统一会进行首字母大写处理。这也算是Go语言的一个规范,小栈君也是多次说过这个问题,希望小伙伴注意一下这个问题。

继承

同样类似于结构体中的继承,方法也是同样可以继承的,就如上图所示,我们的SmallCar继承了Car的相关属性,同样SmallCar也同样拥有Car所特有的方法。

Go语言浅尝之方法

组合和匿名字段

如果一个struct嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的方法从而实现继承,如果一个结构体嵌套了多个匿名结构体。

那么这个结构体可以直接访问多个匿名结构体的方法,从而实现多重继承,当然在真实的项目当中并不推荐多重继承。

如果发现问题这会导致代码的排查复杂性和代码的可读性变差。

好了,今天的分享就到这里,我们下期再见,如果你喜欢我的分享,可以进行转发,点赞或是分享给身边的朋友。武汉加油,中国加油~ 我是小栈君,我们下期再见,拜了个拜。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员第二步

程序员第二步

尹华山 / 人民邮电出版社 / 2013-11 / 45.00元

这本书是写给程序员和项目经理的。作者结合自身的丰富成长历程,通俗易懂地讲述了一名程序员如何才能成为一名优秀的项目经理。内容涉及职业规划、学习方法、自我修炼、团队建设、项目管理等,书中理清了项目管理领域中典型的误区及具有迷惑性的观点,并对项目中的难点问题提出了针对性的解决方法。 全书行文流畅,严谨中带着活泼,理智中透着情感,给读者带来轻松愉快的阅读感受。书中诸多富有创见的观点,让人耳目一新,引......一起来看看 《程序员第二步》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器