Yaegi

Go 语言解释器
授权协议 Apache
开发语言 Google Go
所属分类 程序开发、 脚本编程语言
软件类型 开源软件
地区 不详
投 递 者 萧丁雨
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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)
	}
}

 

  • ```go import ( "bytes" "fmt" "github.com/traefik/yaegi/interp" "github.com/traefik/yaegi/stdlib" "path/filepath" "reflect" ) func main() { goPath, err := filepath.Abs(filepath.FromSlash("./_pk

 相关资料
  • 翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码? 如果是后者,这是否意味着解释语言与介绍集没有关系? 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?

  • 主要内容:编译型语言,解释型语言,总结通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令,也就是由 0 和 1 组成的机器码,能被计算机直接识别并执行。 然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定: 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 W

  • 问题内容: 过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。 我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行? 问题答案: Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理

  • 问题内容: 我之所以这样问是因为我使用Python,但是它也可以应用于其他解释语言(Ruby,PHP,JavaScript)。 每当我在代码中留下评论时,我是否会放慢解释器的速度?根据我对解释器的有限了解,它以字符串形式读取程序表达式,然后将这些字符串转换为代码。似乎每次解析评论时都是浪费时间。 是这样吗 是否有一些解释性语言的注释约定,或者其影响可以忽略不计? 问题答案: 对于Python而言,

  • 问题内容: 在阅读了有关该主题的一些资料之后,我仍然不确定编译语言和解释语言之间的区别。有人告诉我这是Java和JavaScript之间的区别之一。有人能帮我理解吗? 问题答案: 编译语言和解释语言之间有什么区别? 区别 不 在于语言。它在 执行中 。 从我的系统中得到了答案,这是一个答案: 在编译的实现中,原始程序被转换为本地机器指令,这些指令直接由硬件执行。 在解释的实现中,原始程序被翻译成其

  • 问题内容: 请以简单的语言向我解释。请不要发布网络链接,因为我需要阅读开发人员而不是作者的理解。 问题答案: 我能为您指出的最好是SQL Join的直观说明。 这些图表对我有很大帮助。 从此处的链接文章中添加主要图表。 内部联接 内部联接仅生成在表A和表B中都匹配的记录集。 完全外部联接 完全外部联接将生成表A和表B中所有记录的集合,并在可用时提供双方的匹配记录。如果没有匹配项,则缺少的一面将为空

  • 本文向大家介绍易语言运算命令的详细解释,包括了易语言运算命令的详细解释的使用技巧和注意事项,需要的朋友参考一下 本篇内容针对易语言运算命令的位取反、位于、位或、位异或做了详细解释 易语言3.5版提供了4个位运算命令。 1、位取反 位取反命令将指定数值转换为二进制后,对每一比特位的值取反,即0变为1,1变为0,然后转换成十进制数,返回值是转换后的十进制数。 “位取反”命令的命令格式是: 〈整数型〉

  • Go语言的注释 行注释://xxxxxx 块注释:/* xxxxxx */ Go支持C语言风格的/ /块注释, 也支持C++风格的//行注释。 当然,行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码。 每个包都应有一个包注解,即 package 前的块注解。对多个文件的包,包注解只需出现在一个文件中,随便哪个。包注解应该介绍此包,并作为一个整体提供此包的对应信息。它首先出现在 go