我有一個界面如下:type visitable interface { getName() string getLookupMessage() string}我想制作一個帶有類似簽名的函數(shù),apply(visitable []visitable, function ???)它接受可訪問的函數(shù)(例如 getName 或 getLookupMessage)作為第二個參數(shù)。我可以在技術(shù)上做到這一點(diǎn)嗎?如果是,如何?
1 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊
是的,在這種特定情況下,您可以使用方法表達(dá)式。這是有效的,因為兩個接口方法具有相同的簽名,即兩者的類型visitable.getName和visitable.getLookupMessage是func(visitable) string:
package main
type visitable interface {
getName() string
getLookupMessage() string
}
func apply(vs []visitable, m func(visitable) string) {
for _, v := range vs {
m(v)
}
}
func main() {
apply(nil, visitable.getName)
apply(nil, visitable.getLookupMessage)
}
然而,考慮到它是多么微不足道apply,目前還不清楚為什么這會有用,特別是考慮到這不適用于具有不同簽名的方法。
- 1 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消