是否可以在运行时加载特定包? 我希望有一种插件,其中每个插件具有与其他插件相同的功能但具有不同的行为,并且根据配置文件,加载一个或其他插件。 谢谢。
答案 0 :(得分:26)
答案 1 :(得分:13)
从现在开始支持1.8
答案 2 :(得分:11)
您可以考虑在运行时执行'plugin'包,方法是写出一个新程序(比如说,到一个临时目录),然后通过exec.Command执行exec.Command("go", "run", files…).Run()
您会看到一些类似的代码here。
答案 3 :(得分:0)
只需执行这些操作,创建一个读取配置的codegen,生成一个基本的go文件,然后按顺序加载包,然后执行它,编译语言也不会提供动态加载,甚至dart在某种程度上受到影响,简单只是读取您的配置文件,然后创建一个临时文件,其中包含必要的代码以加载并与套接字或http
通信答案 4 :(得分:-3)
我认为你要找的是特殊功能init
如果添加
func init() {
}
在包中,它将在第一次导入包时运行它。 这只发生在同一个二进制文件中。正如其他人已经说过go不支持动态加载的库。