pluginloader icon indicating copy to clipboard operation
pluginloader copied to clipboard

help load plugin for go, base on standard plugin library

Results 1 pluginloader issues
Sort by recently updated
recently updated
newest added

**首先**,简单看了源码是基于go plugin实现的;go plugin目前只能再main package中使用;所以具体项目中是否可以在非 main package中import "github.com/rocket049/pluginloader"待测试; **其次**, go 的plugin机制是基于cgo(原理可以参考动态链接库)的.so实现,对plugin的使用是通过load plugin中的符号表([go symbols](https://pkg.go.dev/github.com/acroca/go-symbols)实现的,理论上每load一次plugin应用内存会增加(增加多少视plugin中符号表的大小而定); **然后**,对于plugin中结构体的function、attr的使用可以理解为对普通package的调用,只能访问、修改公有属性和方法; **另外**在实现抽象terface{}的各个struct的使用时必须类型断言比如B,C都实现了interface A{},但是C在plugin中,A类型传递给C时需要类型断言:A.(C); **最后**,go 的plugin只支持加载不支持“卸载”。so sad! **总之**,没有大家想象的灵活,并且关于对插件如何进行管理更是充满玄学气息。