这是一个用 Go 实现的脚本引擎,支持多种脚本语言(当前支持:Lua、JavaScript),旨在让宿主程序能够无缝加载并执行脚本以扩展行为或做快速原型开发。
- 支持 Lua 脚本执行
- 支持 JavaScript 脚本执行
- 可嵌入到 Go 应用中以扩展运行时行为
- 提供单元测试与示例
- Go 1.20+(根据
go.mod调整) - 可选:Lua runtime / JavaScript runtime 相关依赖(若使用 C 绑定或第三方引擎)
git clone https://github.com/tx7do/go-scripts.git
cd go-scriptsgo mod tidyimport (
_ "github.com/tx7do/go-scripts/javascript"
"github.com/tx7do/go-scripts"
)
// 初始化支持JavaScript的自动扩容引擎池(初始2个实例,最大10个)
enginePool, err := script_engine.NewAutoGrowEnginePool(2, 10, script_engine.JavaScriptType)
if err != nil {
// 处理初始化错误
}
defer enginePool.Close()
// 定义Go中的业务函数
func updateUserStatus(userId int64, status string) error {
// 实际更新用户状态的业务逻辑
return nil
}
// 注册到脚本引擎,供JavaScript调用
err := enginePool.RegisterFunction("updateUserStatus", updateUserStatus)
if err != nil {
// 处理注册错误
}import (
_ "github.com/tx7do/go-scripts/javascript"
"github.com/tx7do/go-scripts"
)
// 初始化支持JavaScript的自动扩容引擎池(初始2个实例,最大10个)
enginePool, err := script_engine.NewAutoGrowEnginePool(2, 10, script_engine.LuaType)
if err != nil {
// 处理初始化错误
}
defer enginePool.Close()