수색…


소개

Go는 런타임에 다른 Go 코드를 동적으로 링크하는 데 사용할 수있는 플러그인 메커니즘을 제공합니다.

Go 1.8부터는 Linux에서만 사용할 수 있습니다.

플러그인 정의 및 사용

package main

import "fmt"

var V int

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

이것은 다음과 같이 만들 수 있습니다 :

go build -buildmode=plugin

그런 다음 애플리케이션에서로드하여 사용합니다.

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"

Go의 상태 2017 에서 예.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow