Go语言浅尝之方法

IT干货栈 · · 1745 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

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

file

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

概念

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

方法和函数的区别

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

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

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

格式

针对于Go语言中的方法的格式如下:
func (receive type) methodName(args ) (返回参数){}

file

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

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

file

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

file

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

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

继承

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

file

组合和匿名字段

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

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

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

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

本文由博客一文多发平台 OpenWrite 发布!


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:IT干货栈

查看原文:Go语言浅尝之方法

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1745 次点击  
加入收藏 微博
下一篇:leetcode_141
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传