是否可以在Go中嵌入一种语言?举例说明嵌入式语言如何访问Go的变量。我需要它来在我的应用程序中创建插件。
答案 0 :(得分:22)
是的,我在此处找到了列表:https://github.com/golang/go/wiki/Projects#virtual-machines-and-languages
答案 1 :(得分:4)
goja - Go中的ECMAScript 5.1(+)实现。
答案 2 :(得分:3)
首先,我会解释cgo。 Go提供API以将值导出为C语言。
例如,您可以将字符串导出为char*
,如下所示。
package main
/*
#include <stdio.h>
static void myputs(char* s) {
puts(s);
}
*/
import "C"
func main() {
s := "hello world"
C.myputs(C.CString(s))
}
所以你需要编写函数来访问C库。但是有一些软件包可以使用脚本语言。参见:
https://github.com/mattn/go-mruby
https://github.com/mattn/go-v8
或者如果您不想使用C语言。你可以使用像otto
这样的原生语言答案 3 :(得分:1)
一个非常好用但上面没有提到的:gopher-lua
,一个 Lua 5.1 虚拟机:
L := lua.NewState()
defer L.Close()
_ = L.DoString(`print("hello")`);
_ = L.DoFile("hello.lua");
答案 4 :(得分:0)
我刚刚发现了这个really exhaustive list,因此认为与像我这样的人一起分享会很好。