在Go语言的世界里,“静态编译”一直是其标志性优势之一,将所有依赖打包成单一可执行文件,部署简单、运行可靠。但在某些场景下,我们需要程序具备动态扩展能力:比如无需重新编译主程序,就能添加新功能、更新业务逻辑。这时候,Go官方提供的plugin包就该登场了。
Go语言从1.8版本开始提供了plugin包,支持动态加载代码模块,这为Go应用的插件化开发提供了强大支持。
Go插件是一种动态加载的代码单元,它可以在程序运行期间被动态加载和挂接到主程序上,从而扩展主程序的功能。从技术角度看,Go插件是独立编译的动态链接库文件(.so文件),通过plugin包加载后,其导出的符号才会被解析和访问。