正如标题所说,我想根据运行时可用的信息动态加载Go包(或不加载).
目标是允许用户通过添加新的本机脚本命令的自定义包扩展程序.目前每次添加新命令或想要禁用某些命令时,我都需要编辑程序并重新编译,而如果我可以创建某种dll或类似的东西,那么我可以创建一个"import"脚本命令来搜索和加载命名的命令库.
好奇的是,有问题的程序是基于自定义命令的脚本库,我用它来处理各种各样的事情.
我提前做了一些搜索,结果看起来不太好,但我找不到清楚的没有.
tux*_*21b 15
Go还不支持动态库.Elias Naur最近发布了一些补丁,但它们还没有被审查过,它们不太可能被包含在Go 1.2中.您可以阅读有关Google网上论坛的讨论:
据我所知,这是有关该主题的最新讨论.
然而,还有另一种方法.您可以在单独的进程中启动插件,并使用net/rpc包与主应用程序进行通信.这也允许您动态启动/停止/重新编译单独的插件,它的优点是坏插件不会崩溃您的程序.擅长网络通信,你只需要好好利用它.
我需要编辑程序并重新编译,
您还可以考虑编写一个小脚本来监视当前目录中的更改(使用fsnotify)并执行"go build",然后重新启动程序.我在本地开发期间对我的一些Web项目使用这种方法,它工作正常.我无法观察任何编译时间,我在切换和刷新浏览器窗口时非常快.我的Python开发周期,必须重新启动解释器,并且必须在每次更改时重新导入所有模块(这可能需要在较大的项目中花费大量时间!),与Go相比,感觉非常笨拙.
| 归档时间: |
|
| 查看次数: |
8266 次 |
| 最近记录: |