Go插件的使用

ChatGPT的答复:

使用 Go 插件的例子如下:

  1. 编写一个 Go 文件 example.go,其中包含一个函数 SayHello():
1
2
3
4
5
6
7
package main

import "fmt"

func SayHello() {
fmt.Println("Hello from plugin!")
}

  1. 通过 go build -buildmode=plugin 命令将该文件编译为插件 example.so:

go build -buildmode=plugin example.go

此时会生成 example.so 文件,它是一个 Go 插件


  1. 在程序中加载该插件并调用其中的函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import "plugin"

func main() {
// 加载插件
p, err := plugin.Open("./example.so")
if err != nil {
panic(err)
}

// 调用函数
f, err := p.Lookup("SayHello")
if err != nil {
panic(err)
}
f.(func())()
}

在上面的代码中,我们使用 plugin.Open() 方法加载 example.so 插件,并使用 p.Lookup() 方法查找其中的函数 SayHello(),最后通过断言将其转换为可调用的函数并执行。


一文搞懂Go语言的plugin

Go 插件系统,一个凉了快半截的特性?

plugin

文章目录