GO語法解讀-struct的匿名interface

高級寫法golang

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定義的全部函數,實現了強解耦。 api

//通常寫法是要struct實現了interface的全部方法,這個struct纔算這個interface的實現,才能被這個interface接收。以下:函數

type broadcastSupport struct {    
}
func Process(envConfigUpdate *cb.Envelope) (*cb.Envelope, error) {
}
b:=broadcastSupport{}
var c ConfigUpdateProcessor=&b

golang的struct裏面嵌入interfacecode

相關文章
相關標籤/搜索