美文网首页
go day06 面向对象 匿名组合 方法、方法集、方法

go day06 面向对象 匿名组合 方法、方法集、方法

作者: 落雨_a363 | 来源:发表于2019-11-08 15:05 被阅读0次

面向对象

对于面向对象编程的支持Go语言设计的非常简洁而优雅。因为,Go语言并没有沿袭传统的面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承)、虚函数、

构造函数和析狗函数、隐藏的this指针等。

尽管Go语言中并没有封装、继承、多态这些概念,但同样通过别的方式实现这些特性:

封装:通过方法实现

继承:通过匿名字段实现

多态:通过接口实现

1.匿名组合:

     匿名字段作用

1

成员操作

1

同名字段

1

非结构体匿名字段

1

结构体指针类型匿名字段

1

2.方法

在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法。

方法总是绑定对象实例,并隐式将实例作为第一实参,方法的语法如下:

func (receiver RecriverType) funcName(parameters) (results)

* 参数receicer可任意命名。如方法中未使用,可省略参数名。

* 参数receicer类型可以是T或*T。类型T不能是接口或指针。

* 不支持重载方法,也就是说,不能定义名字相同,但是不同参数的方法。

1

结构体类型添加方法

1

方法集

类型的方法集是指可以被该类型的值调用的所有方法的集合

用实例value和pointer调用方法(含匿名字段)不受方法集的约束,编辑器总是查找全部方法,并自动转换receiver实参

类型*T方法集

一个指向自定义类型的值的指针,它的方法集由该类型定义的所有方法组成,无论这些方法接受的是一个值还是一个指针。

如果在指针调用一个接受值的方法,Go语言会聪明地将该指针解引用,并将指针所指的底层值作为方法的接收者。

1

方法的继承

1

方法的重写

1

方法值

1

方法表达式

1

相关文章

  • go day06 面向对象 匿名组合 方法、方法集、方法

    面向对象 对于面向对象编程的支持Go语言设计的非常简洁而优雅。因为,Go语言并没有沿袭传统的面向对象编程中的诸多概...

  • Go基础编程---面向对象

    面向对象 Go中没有发封装、继承、多态,但是可以通过方法、匿名字段、接口实现,Go中偏向于面向接口编程 匿名字段(...

  • 匿名函数,面向对象

    匿名函数和使用 类 &面向对象 给对象添加属性 ——init——()方法 魔法方法

  • go面向对象的理解

    在go语言中没有面向对象的概念,但是可以通过下面方式实现面向对象的特征 封装, 通过方法实现 继承, 通过匿名字段...

  • 第04天(面对对象编程)_02

    05_结构体指针类型匿名字段.go 06_面向过程和对象函数的区别.go 07_为结构体类型添加方法.go 08_...

  • Go语言基础04——面向对象编程(匿名字段、方法、接口)

    文章概述 匿名字段 方法 接口 对于面向对象编程的支持Go 语言设计得非常简洁而优雅。因为, Go语言并没有沿袭传...

  • go 面向对象(方法)

    基本介绍 在某些情况下,我们需要声明(定义)方法。比如Person结构体:除了有一些字段外(年龄,姓名..),Pe...

  • 带你Dart带你飞之Functions

    Functions(方法) 方法的参数入口函数一等方法对象匿名方法静态作用域词法闭包 Dart 是一个真正的面向对...

  • golang faq 精选

    go 是面向对象语言吗? 是也不是说是 因为 go 有 类型和方法 支持面向对象的方式编程。说不是 因为go没有...

  • python设计模式

    第一章 面向对象编程 对象;类;方法; 面向对象编程的主要概念 封装;多态;继承;抽象;组合 面向对象的设计原则 ...

网友评论

      本文标题:go day06 面向对象 匿名组合 方法、方法集、方法

      本文链接:https://www.haomeiwen.com/subject/lwnvbctx.html