Recherche…


Introduction

Go fournit un mécanisme de plug-in qui peut être utilisé pour lier dynamiquement un autre code Go lors de l'exécution.

A partir de Go 1.8, il n'est utilisable que sous Linux.

Définir et utiliser un plugin

package main

import "fmt"

var V int

func F() { fmt.Printf("Hello, number %d\n", V) }

Cela peut être construit avec:

go build -buildmode=plugin

Et puis chargé et utilisé depuis votre application:

p, err := plugin.Open("plugin_name.so")
if err != nil {
    panic(err)
}

v, err := p.Lookup("V")
if err != nil {
    panic(err)
}

f, err := p.Lookup("F")
if err != nil {
    panic(err)
}

*v.(*int) = 7
f.(func())() // prints "Hello, number 7"

Exemple tiré de The State of Go 2017 .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow