2 面向对象
约 255 个字 58 行代码 预计阅读时间 2 分钟
事实上 Go 不支持 继承、虚函数、构造/析构函数,隐藏的 this
指针 等 OOP 中的常见概念,但仍可以通过一些方法实现这些特性:
-
封装:通过 方法 实现
-
继承:通过 匿名字段 实现
-
多态:通过 接口 实现
1 匿名字段
-
通常情况下字段名与字段类型一一对应,而 匿名字段 支持 只写类型不写字段名
-
当匿名对象本身是一个结构体时,其所拥有的所有分量都被 隐式引入 当前定义的结构体
-
对包含匿名字段的结构体进行初始化
-
指针类型匿名字段
2 方法
-
Go 支持为 任意类型(包括内置类型,但不包括 指针类型 / 接口)添加方法
-
方法必须具有 Receiver,若在函数中未使用,则可以省略参数名
-
不支持重载:不能包含同名不同参的方法(不同 Receiver 可以具有同名方法)