首先说一个概念性问题: Go 语言仅支持封装,不支持继承和多态; GO 语言没有 class ,只有 struct; Go 语言的结构体(struct)和其他语言的类(class)有同等的地位,但 Go 语言放弃了包括继承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性。 组合甚至不能算面向对象特性,因为在 C 语言这样的过程式编程语言中,也有结构体,也有组合。组合只是形成复合类型的基础。 原来说过,所有的 Go 语言类型(指针类型除外)都可以有自己的方法。在这个背景下…