我想實作一個golang插件的界面,就像這樣:
我想實作一個golang插件的界面。
package main
import "fmt"/span>
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{
插件1{}。
Plugin2{},
}
for _, plugin := range plugins {
plugin.Run()
}
}
我可以呼叫plugins片中定義的所有插件。分片中的專案是硬編碼的,有沒有辦法自動生成分片呢?
uj5u.com熱心網友回復:
一種常見的方法是有一個注冊函式,并從包的init()函式中呼叫該函式。這就是:
var plugins = []Plugin{}。
func RegisterPlugin(p Plugin){
plugins=append(plugins,p)
在宣告插件的包中:
func init() {
plugins.RegisterPlugin(MyPlugin{})
}
一旦你匯入所有宣告插件的包,插件就會被填充。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/329364.html
標籤:
