gitlab.com/Raven-IO/raven-delve@v1.22.4/_fixtures/plugintest2.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"gitlab.com/Raven-IO/raven-delve/_fixtures/internal/pluginsupport"
     6  	"os"
     7  	"plugin"
     8  )
     9  
    10  type asomething struct {
    11  	n int
    12  }
    13  
    14  func (a *asomething) Callback(n int) int {
    15  	return a.n + n
    16  }
    17  
    18  func (a *asomething) String() string {
    19  	return "success"
    20  }
    21  
    22  var ExeGlobal = &asomething{2}
    23  
    24  func must(err error) {
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  }
    29  
    30  func main() {
    31  	plug1, err := plugin.Open(os.Args[1])
    32  	must(err)
    33  	plug2, err := plugin.Open(os.Args[2])
    34  	must(err)
    35  	fn1iface, err := plug1.Lookup("HelloFn")
    36  	must(err)
    37  	fn2iface, err := plug2.Lookup("TypesTest")
    38  	must(err)
    39  	fn1 := fn1iface.(func(int) string)
    40  	fn2 := fn2iface.(func(pluginsupport.Something) pluginsupport.SomethingElse)
    41  	a := fn1(3)
    42  	b := fn2(&asomething{2})
    43  	fmt.Println(a, b, ExeGlobal)
    44  }