Go 的插件化开发 Pingo

MIT
Google Go
跨平台
2015-04-28
红薯

Pingo 是一个用来为 Go 程序编写插件的简单独立库,因为 Go 本身是静态链接的,因此所有插件都以外部进程方式存在。Pingo 旨在简化标准 RPC 包,支持 TCP 和 Unix 套接字作为通讯协议。当前还不支持远程插件,如果有需要,远程插件很快会提供。

使用 Pingo 创建一个插件非常简单,首先新建目录,如 "plugins/hello-world" ,然后在该目录下编写 main.go:

// Always create a new binary
package main

import "github.com/dullgiulio/pingo"

// Create an object to be exported
type MyPlugin struct{}

// Exported method, with a RPC signature
func (p *MyPlugin) SayHello(name string, msg *string) error {
    *msg = "Hello, " + name
    return nil
}

func main() {
    plugin := &MyPlugin{}

    // Register the objects to be exported
    pingo.Register(plugin)
    // Run the main events handler
    pingo.Run()
}

编译:

$ cd plugins/hello-world
$ go build

接下来就可以调用该插件:

package main

import (
    "log"
    "github.com/dullgiulio/pingo"
)

func main() {
    // Make a new plugin from the executable we created. Connect to it via TCP
    p := pingo.NewPlugin("tcp", "plugins/hello-world/hello-world")
    // Actually start the plugin
    p.Start()
    // Remember to stop the plugin when done using it
    defer p.Stop()

    var resp string

    // Call a function from the object we created previously
    if err := p.Call("MyPlugin.SayHello", "Go developer", &resp); err != nil {
        log.Print(err)
    } else {
        log.Print(resp)
    }
}
加载中

评论(2)

keengo
keengo
前景不看好,golang已经开发好了动态链接库的功能了。 #Pingo#
你来人间一趟
你来人间一趟
go的生态越来越强,生态才是最重要的 #Pingo#

暂无资讯

暂无问答

Awesome Python

A curated list of awesome Python frameworks, libraries and software. Inspired by awesome-php....

2016/03/29 13:52
144
1
可爱的python测试开发库(python测试开发工具库汇总)

欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 Python测试开发库 参考资料 https://github.com/vinta/awesome-python https://github.com/atinfo/awesome-test-automation http...

Python frameworks, libraries, software and resources

Awesome Python A curated list of awesome Python frameworks, libraries, software and resources. Inspired by awesome-php. Awesome Python Admin Panels Algorithms and Design Pattern...

2018/12/26 15:59
1
0
阿里技术面试题全面覆盖?不服,你来补充

去阿里面试java程序员,都有些什么样的面试题? 总结一下之前通过的优秀人才的铺垫总结的,希望能帮到大家,以后月收入3万,so easy 一、知其然,知其所以然 在java面试过程中,面试官一定会...

2018/03/21 22:08
1K
3
提升逼格.Summary.提升逼格的那些运维开发资料汇总?

## 开发相关 ### FLASK专区 * awesome-flask https://github.com/humiaozuzu/awesome-flask ### 环境管理 * p:非常简单的交互式 python 版本管理工具。[官网](https://github.com/qw3rtman...

2016/06/15 18:07
964
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部