深度解密Go语言之关于 interface 的10个问题
这次文章依然很长,基本上涵盖了 interface
的方方面面,有例子,有源码分析,有汇编分析,前前后后写了 20 多天。洋洋洒洒,长篇大论,依然有些东西没有涉及到,比如文章里没有写到反射
,当然,后面会单独写一篇关于反射
的文章,这是后话。
还是希望看你在看完文章后能有所收获,有任何问题或意见建议,欢迎在文章后面留言。
这篇文章的架构比较简单,直接抛出 10 个问题,一一解答。
1. Go 语言与鸭子类型的关系
先直接来看维基百科里的定义:
If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.
翻译过来就是:如果某个东西长得像鸭子,像鸭子一样游泳,像鸭子一样嘎嘎叫,那它就可以被看成是一只鸭子。
Duck Typing
,鸭子类型,是动态编程语言的一种对象推断策略,它更关注对象能如何被使用,而不是对象的类型本身。Go 语言作为一门静态语言,它通过通过接口的方式完美支持鸭子类型。
例如,在动态语言 python 中,定义一个这样的函数:
def hello_world(coder):
coder.say_hello()
相关文章