在Go中嵌入脚本语言

nkkqxpd9  于 12个月前  发布在  Go
关注(0)|答案(4)|浏览(123)

可以在Go中嵌入一种语言吗?我需要它在我的应用程序中创建插件。

kknvjkwl

kknvjkwl1#

我在虚拟机和语言上找到了这个列表。

  • Gelo-可扩展、可嵌入的解释器
  • GoForth-一个简单的Forth解析器
  • GoLightly-一个灵活、轻量级的虚拟机,具有运行时可配置的指令集
  • Golog-Go语言中的Prolog解释器
  • Minima-Go语言中实现的一种语言。
  • RubyGoLightly-TinyRb to Go的实验性端口
  • forego-第四个虚拟机
  • go-python- Go绑定CPython C-API
  • GoEmPHP-这个包是为将PHP嵌入Go而构建的。
  • goenv-创建一个隔离的环境,在其中安装Go包,二进制文件,甚至C库。非常类似于Python的virtualenv。
  • golemon-Lemon解析器生成器的一个端口
  • goll1e-Go语言的LL(1)解析器生成器。
  • golua-用于LUA的C API的Go Package 器
  • golua-fork-GoLua的一个分支,适用于当前版本的Go
  • gotcl-Go中的Tcl解释器
  • ngaro-运行retroForth映像的ngaro虚拟机
  • otto-用Go语言编写的JavaScript解析器和解释器
  • monkey-在Go程序中嵌入SpiderMonkey,Mozilla JavaScript引擎。
  • go-v8-Go的V8 JavaScript引擎绑定
  • gomruby - mruby(mini Ruby)bindings for Go
  • LispEx-Lisp的一种方言,扩展为支持并发编程,用Go语言编写。

更新:

  • Tengo-一个小的,动态的,快速的,安全的Go脚本语言。
  • gluaGoLuaJitgijitothers- LuaJIT,最快的JIT实现之一
  • Elsa-基于QuickJS的Typescript和JavaScript,创建qemu、ffmpeg、tcc的同一个人

更新2:

  • Anko-类Golang语法
  • Binder-无缝lua绑定,使用gopher-lua
  • Cel-Go-类C语法
  • Ecal-类Golang语法
  • Expr-类Golang语法
  • Gentee-强类型过程语言,用于类似shell脚本的用例
  • Gisp-类LISP语法
  • Goja - pure Go,ecmascript 5.1 interpreter
  • gval-数学表达式计算器,不是完整的语言
  • prolog-另一个prolog解释器
  • purl- perl解释器
  • starlark-类似Python的语法
brjng4g3

brjng4g32#

goja- ECMAScript 5.1(+)在Go中的实现。

w3nuxt5m

w3nuxt5m3#

首先,我将解释cgo. Go提供API将值导出到C语言。
http://golang.org/cmd/cgo/
例如,您可以像下面这样将字符串导出为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这样的原生go语言。
https://github.com/robertkrimen/otto
https://github.com/mattn/anko

7jmck4yq

7jmck4yq4#

一个非常好用,但上面没有提到的:gopher-lua,Lua 5.1 VM:

L := lua.NewState()
defer L.Close()
_ = L.DoString(`print("hello")`);
_ = L.DoFile("hello.lua");

字符串

相关问题