interface 和 superclass 并不一样,文中称 Animal 为超类并不恰当。我最初接触 go 的时候确实感觉到它的简洁,但是很快也发现了很多过于简洁的部分。比如没有了 implements 关键字,无疑加重了代码维护时程序员的心智负担,在你看到 Dog 的定义时,你完全不可能知道它实现了 Animal 接口,我想没有人会背上所有类库中所有接口对应的方法签名,反之你只有通过阅读文档,才会有可能知道原来 Dog 实现了 Animal 接口,而写文档的人是有可能由于疏忽忘记了对一两个接口的注明,但是如果提供了 implements 关键字配合编译器期间的 type checking,那么就可以在编译期间发现接口实现的问题,并且由于有了 implements 关键字,在看到 Dog 类型的定义时,会很显示的知道,原来它实现了 Animal 接口