在传统面向对象编程语言如JavaC++中,继承是代码复用的主要方式。但Go语言从设计之初就选择了另一条路——组合。这一设计决策反映了Go语言对简洁性、可维护性和实用性的追求。这篇文章我就来说说Go语言为什么提倡组合优于继承

在深入了解组合的优势之前,我们先看看继承存在哪些固有问题。

继承创建了"is-a"(是一个)关系,这种关系在编译时静态定义,导致代码高度耦合。父类的任何改变都可能强制子类进行变更,因为它们的设计紧密相连。