**鸭子类型(duck typing):**是动态类型的一种风格,不管对象属于哪个,也不管声明的具体接口是什么,只要对象实现了相应的方法,函数就可以在对象上执行操作。
Go语言就引入了鸭子类型,一个struct不需要显示声明实现了某个interface,只要struct拥有的方法的签名符合interface的定义,即可隐式声明一个interface。
这个特性的优劣,网上已经讨论得很多了,而最近我则遇到了鸭子类型的一个坑。
最后在修改一个比较老版本的node_exporter
,其中使用到了比较老版本的github.com/prometheus/common v0.14.0
,而因为某些原因,需要更新这个库,却发现更新之后,日志的级别filter设置成info但不起效果了,debug日志满天飞,排查了一段时间发现原因。
说些什么吧!