在Go程序中嵌入ZGG脚本
ZGG语言从开发之初就支持在Go语言中使用(毕竟ZGG的开发团队所在公司的主力开发语言是Go)。以下是如何在一个Go的项目中集成ZGG引擎
如何集成ZGG?
第一步:安装依赖库
第二步:参考下面例子完成代码集成
1.简单使用Demo(展示一下核心接口的用法)
2. 调用Go方法和对象
核心接口说明:
func RunCode(script interface{}, opts ...ExecOption) (exported map[string]interface{}, err error)
功能:运行代码模块
参数:
script: 待运行的代码,可为源码(string)或者预先编译好的代码对象(ast.Node)
opts: 需要注入到运行环境的内容。目前仅支持注入变量
返回值:
exported: 运行成功后,返回这个代码模块导出的内容。err为nil时,exported一定不为nil
err: 当且仅当运行失败时不为空
func Eval(expr interface{}, opts ...ExecOption) (interface{}, error)
功能: 运行表达式求值
参数:
script: 待运行的表达式代码,可为源码(string)或者预先编译好的代码对象(ast.Node)
opts: 需要注入到运行环境的内容。目前仅支持注入变量
返回值:
exported: 运行成功后,返回这个表达式的返回值
err: 当且仅当运行失败时不为空
func CompileCode(code interface{}) (compiled ast.Node, err error)
功能:编译代码模块
参数:
code: 待运行的表达式代码,可为源码(string)或者预先编译好的代码对象(ast.Node)
返回值:
compiled: 编译结果。如果入参code是预先编译好的,则直接返回code
err: 当且仅当运行失败时不为空
func CompileExpr(code interface{}) (ast.Node, error)
功能:编译表达式
参数:
code: 待运行的表达式代码,可为源码(string)或者预先编译好的代码对象(ast.Node)
返回值:
compiled: 编译结果。如果入参code是预先编译好的,则直接返回code
err: 当且仅当运行失败时不为空
最后更新于