项目需求是通过 golang 编写一 framework (看重 go 的高并发), framework 为插件化,某一包(目录)下放置插件,插件更新频率很高。问题是,在不知道插件名(文件名)的情况下怎样才能动态的调用插件?没有找到怎么用 go 实现.. 现在的想法是插件用 python 开发,然后 go 遍历插件目录进行调用。
忘指教
忘指教
|
mengzhuoNov 23, 2015
1
go 是静态语言!!!是需要编译的!!!是不能更改运行时的!!
只能用父进程监控文件变化,重新编译,杀掉原有子进程,然后启动。 |
|
2
或者问题可以转化成:怎么获取一个包中的所有 struct ?
|
|
ZzzzzzzzzNov 23, 2015
3
go 插件编译成动态链接库暴露固定的接口, 主程序里通过 cgo 用 dlopen 、 dlsym 这些调用这个接口, 但是感觉会不会太坑.....
|
|
moroNov 23, 2015
4
反射可以实现。
|
|
UnknwonNov 23, 2015
6
如果你可以实现知道哪些函数要被执行,可以用字符串查找来通过反射执行。。
|
|
kswordNov 23, 2015
7
go 是静态编译的,不适合实现插件机制,或集成 lua 试下: https://github.com/yuin/gopher-lua
|
|
moroNov 23, 2015
8
包必须要先引入。
|
|
jyboxNov 23, 2015
9
https://golang.org/pkg/reflect/ 反射模块可以提供一定程度上的运行时类型信息
|
|
chai2010Nov 24, 2015
10
做成 dll
|
|
456vvMar 17, 2016
11
四种好用的方法: 1 , RPC 。 2 , template 。 3 , reflect 。 4 , http
|