Contents

Go的面对对象

Go的面对对象

Go是面向对象的语言吗?
Yes and No.

1.Go允许OO的编程风格

2.Go的struct可以看作其他语言的Class

3.Go缺乏其他语言的继承结构

4.Go的接口与其他语言有很大差异

Go的 “类”

1.其他语言中,往往用class表示一类数据

2.calss的每个实例称作“对象”

3.Go中用struct表示一类数据

4.struct每个实例并不是“对象”,而是此类型的“值”

5.struct也可以定义方法

Go的继承

1.Go并没有继承关系

2.所谓Go的继承只是组合

3.组合中的匿名字段,通过语法糖达成了类似继承的效果

Go的接口

1.接口可以定义Go中的一组行为相似的struct

2.struct并不显式实现接口,而是隐式实现

小结

1.Go没有对象,没有类,没有继承

2.Go通过组合匿名字段来达到类似继承的效果

3.通过以上手段去掉了面对对象中复杂而冗余的部分

4.保留了基本的面对对象特性