高级写法
type Manager interface {
GetChain(chainID string) (ChainSupport, bool)
SystemChannelID() string
NewChannelConfig(envConfigUpdate *cb.Envelope) (configtxapi.Manager, error)
}
type ConfigUpdateProcessor interface {
Process(envConfigUpdate *cb.Envelope) (*cb.Envelope, error)
}
type broadcastSupport struct {
multichain.Manager
broadcast.ConfigUpdateProcessor
}
//上面把interface作为struct的一个匿名成员,就可以把这个struct当做此interface的一个实现,而不需要管struct是否已经实现interface定义的所有函数,实现了强解耦。
//一般写法是要struct实现了interface的所有方法,这个struct才算这个interface的实现,才能被这个interface接收。如下:
type broadcastSupport struct {
}
func Process(envConfigUpdate *cb.Envelope) (*cb.Envelope, error) {
}
b:=broadcastSupport{}
var c ConfigUpdateProcessor=&b
有疑问加站长微信联系(非本文作者)