亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將接口方法傳遞給函數?

如何將接口方法傳遞給函數?

Go
慕妹3146593 2022-05-17 16:59:27
我有一個界面如下:type visitable interface {    getName() string    getLookupMessage() string}我想制作一個帶有類似簽名的函數,apply(visitable []visitable, function ???)它接受可訪問的函數(例如 getName 或 getLookupMessage)作為第二個參數。我可以在技術上做到這一點嗎?如果是,如何?
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

是的,在這種特定情況下,您可以使用方法表達式。這是有效的,因為兩個接口方法具有相同的簽名,即兩者的類型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,目前還不清楚為什么這會有用,特別是考慮到這不適用于具有不同簽名的方法。


查看完整回答
反對 回復 2022-05-17
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號