go 接口静态与动态校验
go 的接口是duck模型,类型不需要显式的声明实现某个接口,只需实现该接口的所有methods,就认为该类型实现该接口。在实际中,大部分接口转换是静态的,发生在编译时刻;go 也支持动态接口转换,转换发生在运行时。
比如,需要传递 *os.File
到一个需要io.Reader参数的函数,如果*os.File
没有实现接口io.Reader,则程序在编译期就无法通过;
有些接口装换发生在运行期,一个实例就是
go 的接口是duck模型,类型不需要显式的声明实现某个接口,只需实现该接口的所有methods,就认为该类型实现该接口。在实际中,大部分接口转换是静态的,发生在编译时刻;go 也支持动态接口转换,转换发生在运行时。
比如,需要传递 *os.File
到一个需要io.Reader参数的函数,如果*os.File
没有实现接口io.Reader,则程序在编译期就无法通过;
有些接口装换发生在运行期,一个实例就是