是否有添加标签或注释某些方法的方法,以便每当事件发生时,带有该标签或注释的所有方法都将被调用?
如何在Go中实现这一目标?
答案 0 :(得分:0)
正如其他人所说,Go中的函数上没有注释或标签。
但是,使用map
(或slice
)和寄存器函数来保存其他func
(或interface
)的记录是非常有可能的。您只需要手动调用该寄存器func
(通常在该软件包的init()
中)即可。
例如,
package events
var eventFuncs = make(map[string]func())
func Register(event string, f func()) {
eventFuncs[event] = append(eventFuncs[event],f)
}
func Get(event string) []func() {
return eventFuncs[event]
}
并使用该软件包进行注册:
package xy
import (
"fmt"
"some.url/events"
)
func Call() {
fmt.Println("Ha!")
}
func init() {
events.Register("x",Call)
}
然后在其他地方调用func
:
package main
import (
"some.url/events"
)
func main() {
for _,f := range pkg.GetEvent("x") { f() }
}