在Go中嵌入脚本语言

问题描述 投票:3回答:4

可以在Go中嵌入一种语言吗?举例说明嵌入式语言如何访问Go的变量。我需要它来在我的应用程序中创建插件。

scripting go embedding
4个回答
3
投票

首先,我将解释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这样的原生语言

https://github.com/robertkrimen/otto

https://github.com/mattn/anko


24
投票

是的,我在这里找到了这个清单:https://github.com/golang/go/wiki/Projects#virtual-machines-and-languages

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

5
投票

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


0
投票

我刚刚发现这个goja所以认为分享给我这样的人寻找一个人会很好。

© www.soinside.com 2019 - 2024. All rights reserved.