我用 Go 编写了一个插件生成器。回购是开放的。
该项目在一些临时文件中创建了一些 Go 代码,定义了一个从命令行参数中获取的函数,将该代码编译成一个插件,加载该插件,获取其中的函数,并使用参数调用它,然后打印结果。
我们希望能够处理多个函数和多个插件。例如,SUMbody 的函数, body 的 return x+y;函数;等等。PRODreturn x*y
我不希望生成的代码始终使用常量名称 FUNCTION。生成的 .go 文件不能包含名称在运行时给出的函数,即funame 下面代码中的 my 吗?Go 语言是否有某些功能禁止这样做?
//TODO: Investigate how to relax the name FUNCTION into a variable
type Xinterface interface {
FUNCTION(x int, y int) int
}
用法示例:
$ go run forbasile.go SUM 'return x+y' 3 5
func(s sum) FUNCTION (x int, y int) int {
start of sum: x=3, y=5
131 bytes written successfully
/tmp/go-build104174513/b001/exe
compiling plugin
[]
loading module
looking up symbol
checking module
8
Generated code: /tmp/SUM.go
Generated object file: /tmp/SUM.so
$ go run forbasile.go SUMSQUARE 'return x*x + y*y' 3 4
func(s sumsquare) FUNCTION (x int, y int) int {
start of sumsquare: x=3, y=4
161 bytes written successfully
/tmp/go-build555823501/b001/exe
compiling plugin
[]
loading module
looking up symbol
checking module
25
Generated code: /tmp/SUMSQUARE.go
Generated object file: /tmp/SUMSQUARE.so
侃侃无极
相关分类