Go 语言解释器 Yaegi

Go 语言解释器 Yaegi

Apache
Google Go
跨平台
2019-07-27
红薯

Yaegi 是一个优雅的 Go 语言解释器,可以执行 Go 脚本和插件。

特性

  • 完整支持 Go 语言规范
  • 用 Go 编写,只使用标准库
  • 简单的解释器 API: New()Eval()Use()
  • 只要能运行 Go 的地方就可以运行 Yaegi
  • 所有 Go & 运行时资源都可以在脚本中访问
  • 安全: 默认不使用和输出 unsafe 和 syscall 包
  • 支持 Go 1.11 和 Go 1.12 

示例代码:

package main

import (
	"github.com/containous/yaegi/interp"
	"github.com/containous/yaegi/stdlib"
)

func main() {
	i := interp.New(interp.Options{})

	i.Use(stdlib.Symbols)

	_, err := i.Eval(`import "fmt"`)
	if err != nil {
		panic(err)
	}

	_, err = i.Eval(`fmt.Println("Hello Yaegi")`)
	if err != nil {
		panic(err)
	}
}

 

的码云指数为
超过 的项目
加载中

评论(13)

无闻
无闻
牛皮!
s_jqzhang
s_jqzhang
要是支持自动完成功能就好了
ljxun
ljxun
虽然golang是编译型的语言,但是执行速度确实和解释性语言差不多了。所以想弱弱的问一句,这有什么用?我一直用"go run"的
青衫柏箴
青衫柏箴
可以在你当程序里面执行动态脚本
吴题
吴题
如果跟解释性语言一样。。。那它开发编译性干嘛,跟有些解释性jit性能差不多到是信
ljxun
ljxun
go语言非常讲究编译速度,编译时间很短。所以编译运行速度,感觉和解释性语言差不多。因此这个东西视乎用处不大。而且这个如果有bug还会导致运行结果和go本身不一样,到时查个错误查死你。
love1013
love1013
go目标是并发
五十风
五十风
6666这个可以
泛逸舟
泛逸舟
虽然不明白能干啥,但是还是给个赞
j
jmesyan
能不能用它实现go的热更?
魂祭心
魂祭心
可以是可以,和你在go上跑一个js脚本引擎是差不多的效果
j
jmesyan
不错,可以拿来做热更
love-mcu
love-mcu
好东西

暂无资讯

暂无问答

暂无博客

返回顶部
顶部