go-interface
要点
interface
是一组method
的集合(而不是function
, 因为function
没有reciver
)若某个类型实现了
interface
内所有method
,则该类型对象与该interface
对象转换interface
是一种语义上的抽象,该对象提供了某种语义抽象功能,而该功能的具体实现不同如
coder(编码器)
,存在编码,解码功能,但具体可能有json
,xml
等多种方式实现赋值给
interface
若为值,则该类型
method
的reciver
也必须是值类型若为指针值,则该类型
method
的reciver
也必须是指针类型
因为
method
的reciver
是否为指针,代表的语义功能可能完全不一样reciver
为指针类型,意味着在该method
中,很可能会改变该对象自身(具体由实现决定)若一个
method
要求的是指针类型,而在给interface
赋值时,只是传值的话,是无法改变该对象的!