"Go语言的面向对象机制与一般语言不同。" -- 《Go语言圣经》golang中组合语法,就是在一个类中,引入了另一个类,如如上边代码所示,Work类中定义了一个Logger类型的变量,这种是比较常见的引入方式,姑且在此称之为非匿名组合,那什么是匿名组合呢,如其名,就是在组合的过程中,不给名字呗,如代码所示:上边的代码中,Work类与Work2类均与Logger类匿名组合。两个类唯一不同的是,Work2中组合的是指针类型的Logger类。Go语言有一个特性让我们只声明一个成员对应的数据类型而不指名成员的名字; 这类成员就叫匿名成员。因此不能同一级同时包含两个类型相同的匿名成员, 这会导致名字冲突。

Golang中匿名组合实现伪继承的方法

Golang中匿名组合实现伪继承的方法

Golang中匿名组合实现伪继承的方法

Golang中匿名组合实现伪继承的方法

Golang中匿名组合实现伪继承的方法

Golang中匿名组合实现伪继承的方法