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

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

查找接口的所有實現并將它們放在切片中

查找接口的所有實現并將它們放在切片中

Go
一只萌萌小番薯 2022-10-04 16:10:32
我正在嘗試實現一個像這樣的golang插件接口:package mainimport "fmt"type Plugin interface {    Run() bool}type Plugin1 struct{}type Plugin2 struct{}func (p Plugin1) Run() bool {    fmt.Println("Plugin1::Run()")    return true}func (p Plugin2) Run() bool {    fmt.Println("Plugin2::Run()")    return true}func main() {    plugins := []Plugin{        Plugin1{},        Plugin2{},    }    for _, plugin := range plugins {        plugin.Run()    }}我可以調用切片中定義的所有插件。切片中的項目是硬編碼的,有沒有辦法自動生成切片?plugins
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

執行此操作的一種常見方法是擁有一個寄存器函數,并從包的函數中調用該函數。那是:init()


var plugins = []Plugin{}


func RegisterPlugin(p Plugin) {

  plugins=append(plugins,p)

}

在聲明插件的軟件包中:


func init() {

   plugins.RegisterPlugin(MyPlugin{})

}

導入所有聲明插件的包后,將填充插件。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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