共享库工具

Currently plugins are only supported on Linux and macOS

  1. 通过plugin我们可以很方便的对于不同功能加载相应的模块并调用相关的模块;
  2. 也可以针对不同语言(英文、汉语、德语……)加载不同的语言so文件,进行不同的输出;
  3. 还可以把编译出的文件给不同的编程语言用

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模块的使用相关推荐

  1. nagios::plugin模块安装报错解决

    安装Nagios::Plugin模块时报告TONVOON/Nagios-Plugin-0.36.tar.gz错误 通过如下方法可以解决: perl -MCPAN -e shell install Mo ...

  2. golang log模块之log4go使用介绍

    https://blog.csdn.net/Jeanphorn/article/details/78576759 1. 描述 在go语言中,自身已经集成了一定log模块,开发者可以使用go语言自身的l ...

  3. 最详细的golang + 私库(gitlab gitee) 模块开发 这一篇文章解决所有问题

    golang独立模块开发流程 大纲 基本概念与背景 模块开发流程总结 基于gitee私库 基于gitlab私库 基本概念与背景 java项目开发过程中,有不同的项目组,有的项目组做业务开发,有的项目组 ...

  4. golang 日志分析_容器日志采集利器:Filebeat深度剖析与实践

    在云原生时代和容器化浪潮中,容器的日志采集是一个看起来不起眼却又无法忽视的重要议题.对于容器日志采集我们常用的工具有filebeat和fluentd,两者对比各有优劣,相比基于ruby的fluentd ...

  5. docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制

    导读:2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕.该热潮的背后推手正是云计 ...

  6. 第 20 课时:GPU 管理和 Device Plugin 工作机制(车漾)

    本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 2016 年,随着 AlphaGo 的走红和 TensorF ...

  7. 从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制

    作者 | 车漾 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 20 讲. 关注"阿里巴巴云原生"公众号,回复关键词**" ...

  8. python加go_[Python异步博客开发] 加入Golang, go~!

    [Frodo-V2.0] 拥抱Golang, go~!​zhikai.pro Frodo-v2.0 没有添加新功能,而是将后端最重要的部分,后台API使用golang重构,python现在只负责前台模 ...

  9. python跨包导入包_python引入跨模块包

    人生苦短,我学python. 最近学习python,由于包的模块分的比较多.所以要用到跨模块引入 且调用中间的方法 整体目录结构如下. 需求: 在 API模块 user.py 中 调用 plugin ...

最新文章

  1. ROS中Remap标签详解
  2. R可视化使用ggplot2将坐标轴设置为对数坐标轴(Log Scale)
  3. 周鸿祎谈抢票:技术推动建立一个高效的公平社会
  4. 程序员必须掌握的核心算法有哪些?
  5. WEB 前端跨域解决方案
  6. UITableView的beginUpdates和endUpdates
  7. python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现
  8. 10个 IDEA 插件来解放你的双手
  9. Kibana入门安装与介绍
  10. Codewars-The wheat/rice and chessboard problem(棋盘放谷粒)
  11. 一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心
  12. win32com模块
  13. python绘制缓和曲线_CAD里面如何绘制缓和曲线
  14. 蒙特卡罗模拟/蒙特卡罗方法
  15. 缠论108课_缠论108课完整版pdf_炒股108式
  16. 《软件过程管理》 第七章 软件过程的质量管理
  17. 中医测试体质的软件,中医体质辨识软件五大功能
  18. stm32定时器引脚分布,定时器2~7、9~14基本配置
  19. 高等数学---不定积分的计算---基本积分法
  20. 固态硬盘是什么接口_经常买错各种SATA和NVMe固态硬盘,有没有办法快速分辨呢?看接口...

热门文章

  1. gulp实用配置(1)——demo
  2. python 数据类型之间的转换
  3. Tomcat-部署多个项目(不同端口)
  4. OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题
  5. redis 版的 hello world
  6. CF 839 E-最大团
  7. Resin-IOException: write() forbidden after writer is closed
  8. centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置
  9. matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halc
  10. java注解类型命名_第三十九条:注解优先于命名模式