Go 如何仅调用具有注释或标记的特定函数

Go 如何仅调用具有注释或标记的特定函数,go,annotations,Go,Annotations,有没有一种方法可以添加一个标记或注释一些方法,这样每当发生事件时,所有带有该标记或注释的方法都会被调用 如何在Go中实现这一点?正如其他人所说,Go中的函数没有注释或标记 但是,使用map或slice和register函数来保存其他函数或接口的记录是完全可能的。您只需要在包的init中手动调用register func 比如说, package events var eventFuncs = make(map[string]func()) func Register(event string,

有没有一种方法可以添加一个标记或注释一些方法,这样每当发生事件时,所有带有该标记或注释的方法都会被调用


如何在Go中实现这一点?

正如其他人所说,Go中的函数没有注释或标记

但是,使用map或slice和register函数来保存其他函数或接口的记录是完全可能的。您只需要在包的init中手动调用register func

比如说,

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() }
}

不。Go中的函数没有注释或标记。不过,如果你解释一下你的更大目标,几乎肯定有办法实现它。这看起来像是XY问题。听起来像是你在尝试某种AOP,也许?Go中不支持这一点,但也许您可以提供一些您实际尝试完成的详细信息。我正在尝试为Kubernetes运行Go客户端,每当创建k8服务时,我希望调用n个不同的子例程来执行不同的操作。不要编辑标题以添加标记。标签,即在Go中,应。