1 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
功能
func (e Element) Less(f Element) bool
與界面的功能不匹配
func Less(other Node) bool
您需要實(shí)際匹配簽名,如
func (e Element) Less(f Node) bool
是的,這意味著您可以通過(guò)Node而不是Element。您將必須在運(yùn)行時(shí)進(jìn)行測(cè)試,并且會(huì)出現(xiàn)恐慌。
作為為什么這樣的一個(gè)示例,請(qǐng)考慮您的代碼是否合法,并且我嘗試了以下操作:
type Other int
func (o Other) Less(f Other) bool {
return o < f
}
func (o Other) AddChild(f Other) {}
e = GetSomeElement() // of type Element
var o Other
var n Node = e
fmt.Println(n.Less(o))
因?yàn)槲覍?chǔ)存在Element類型的var中Node,所以現(xiàn)在我可以Less()用不是另一個(gè)Element違反了類型的參數(shù)來(lái)調(diào)用Element.Less()。這就是為什么這是不合法的。
- 1 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報(bào)