2 回答

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊
將接口更多地視為合同。它們不會僅僅因為它們不直接實現(xiàn)任何東西而隱式實現(xiàn)其他接口。
接口由實現(xiàn)滿足。(希望這是有道理的)
在您的示例中,兩種機器類型都可以創(chuàng)建簡單的“材料”,如下所示: https: //play.golang.org/p/ZoYJog2Xri
package main
type Machine1 interface {
Produce() Material
}
type Machine2 interface {
Produce() Material
}
type Material interface {
Use() error
}
type PencilMachine struct{}
func (pm *PencilMachine) Produce() Material {
return &Pencil{}
}
type Pencil struct{}
func (p *Pencil) Use() error {
return nil
}
func main() {
pm := new(PencilMachine)
var m1 Machine1
m1 = Machine1(pm)
var m2 Machine2
m2 = Machine2(m1)
_ = m2
}

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
這是因為您的鉛筆機沒有實現(xiàn) Machine2 接口。這是罪魁禍?zhǔn)祝?/p>
func (pm *PencilMachine) Produce() Material1 {
return &Pencil{}
}
您會看到,盡管 PencilMachine 具有相同的功能Produce,但它不會返回相同的數(shù)據(jù)類型(Material1),因此它僅實現(xiàn) Machine1。Machine2 需要一個Produce函數(shù)來返回 Material2
- 2 回答
- 0 關(guān)注
- 205 瀏覽
添加回答
舉報