golang plugin模块的使用
共享库工具
Currently plugins are only supported on Linux and macOS
- 通过plugin我们可以很方便的对于不同功能加载相应的模块并调用相关的模块;
- 也可以针对不同语言(英文、汉语、德语……)加载不同的语言so文件,进行不同的输出;
- 还可以把编译出的文件给不同的编程语言用
go plugin的使用方法
使用加载plugin基本流程加载编译好的插件 plugin.Open("./plugin_doctor.so") (*.so文件路径相对与可执行文件的路径,可以是绝对路径)
寻找插件可到变量 plug.Lookup("Doctor"),
TypeAssert: Symbol(interface{}) 转换成API的接口类型
执行API interface的方法
e.g
实验记录
[kou@python plugin]$ ls
aplugin.go aplugin.so test.go
[kou@python plugin]$ pwd
/home/kou/go/src/plugin
[kou@python plugin]$ cat aplugin.go
package main
func Add(x, y int) int {return x+y}
func Subtract(x, y int) int {return x-y
}
[kou@python plugin]$ cat test.go
package mainimport ("fmt""plugin"
)func main(){p, _ := plugin.Open("./aplugin.so")add, _ := p.Lookup("Add")sub, _ := p.Lookup("Subtract")sum := add.(func(int, int)int )(11, 2)fmt.Println(sum)subt := sub.(func(int, int)int )(22,1)fmt.Println(subt)}
结果
go build -buildmode=plugin -o aplugin.so aplugin.go
[kou@python plugin]$ go run test.go
13
21
参考文献
http://www.361way.com/go-plugin/5925.html
https://mojotv.cn/go/golang-plugin-tutorial
golang plugin模块的使用相关推荐
- nagios::plugin模块安装报错解决
安装Nagios::Plugin模块时报告TONVOON/Nagios-Plugin-0.36.tar.gz错误 通过如下方法可以解决: perl -MCPAN -e shell install Mo ...
- golang log模块之log4go使用介绍
https://blog.csdn.net/Jeanphorn/article/details/78576759 1. 描述 在go语言中,自身已经集成了一定log模块,开发者可以使用go语言自身的l ...
- 最详细的golang + 私库(gitlab gitee) 模块开发 这一篇文章解决所有问题
golang独立模块开发流程 大纲 基本概念与背景 模块开发流程总结 基于gitee私库 基于gitlab私库 基本概念与背景 java项目开发过程中,有不同的项目组,有的项目组做业务开发,有的项目组 ...
- golang 日志分析_容器日志采集利器:Filebeat深度剖析与实践
在云原生时代和容器化浪潮中,容器的日志采集是一个看起来不起眼却又无法忽视的重要议题.对于容器日志采集我们常用的工具有filebeat和fluentd,两者对比各有优劣,相比基于ruby的fluentd ...
- docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制
导读:2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕.该热潮的背后推手正是云计 ...
- 第 20 课时:GPU 管理和 Device Plugin 工作机制(车漾)
本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 2016 年,随着 AlphaGo 的走红和 TensorF ...
- 从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制
作者 | 车漾 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 20 讲. 关注"阿里巴巴云原生"公众号,回复关键词**" ...
- python加go_[Python异步博客开发] 加入Golang, go~!
[Frodo-V2.0] 拥抱Golang, go~!zhikai.pro Frodo-v2.0 没有添加新功能,而是将后端最重要的部分,后台API使用golang重构,python现在只负责前台模 ...
- python跨包导入包_python引入跨模块包
人生苦短,我学python. 最近学习python,由于包的模块分的比较多.所以要用到跨模块引入 且调用中间的方法 整体目录结构如下. 需求: 在 API模块 user.py 中 调用 plugin ...
最新文章
- ROS中Remap标签详解
- R可视化使用ggplot2将坐标轴设置为对数坐标轴(Log Scale)
- 周鸿祎谈抢票:技术推动建立一个高效的公平社会
- 程序员必须掌握的核心算法有哪些?
- WEB 前端跨域解决方案
- UITableView的beginUpdates和endUpdates
- python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现
- 10个 IDEA 插件来解放你的双手
- Kibana入门安装与介绍
- Codewars-The wheat/rice and chessboard problem(棋盘放谷粒)
- 一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心
- win32com模块
- python绘制缓和曲线_CAD里面如何绘制缓和曲线
- 蒙特卡罗模拟/蒙特卡罗方法
- 缠论108课_缠论108课完整版pdf_炒股108式
- 《软件过程管理》 第七章 软件过程的质量管理
- 中医测试体质的软件,中医体质辨识软件五大功能
- stm32定时器引脚分布,定时器2~7、9~14基本配置
- 高等数学---不定积分的计算---基本积分法
- 固态硬盘是什么接口_经常买错各种SATA和NVMe固态硬盘,有没有办法快速分辨呢?看接口...
热门文章
- gulp实用配置(1)——demo
- python 数据类型之间的转换
- Tomcat-部署多个项目(不同端口)
- OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题
- redis 版的 hello world
- CF 839 E-最大团
- Resin-IOException: write() forbidden after writer is closed
- centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置
- matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halc
- java注解类型命名_第三十九条:注解优先于命名模式