由于最近将java项目迁移到go项目中, java项目中原本使用的MVEL动态脚本需要在go中找到相应的脚本语言替换. 找到了gopher-lua 测试了下性能方面还不错. github地址 https://github.com/yuin/gopher-lua
发现在lua脚本中直接调用的go中status中的属性 并修改值的话需要使用到gopher-luar 插件才能完成 插件地址https://github.com/layeh/gopher-luar
package luar_testimport ("fmt""github.com/yuin/gopher-lua""layeh.com/gopher-luar"
)type User struct {Name stringtoken string
}func (u *User) SetToken(t string) {u.token = t
}func (u *User) Token() string {return u.token
}const script = `
print("Hello from Lua, " .. u.Name .. "!")
u:SetToken("12345")
`func Example_basic() {L := lua.NewState()defer L.Close()u := &User{Name: "Tim",}L.SetGlobal("u", luar.New(L, u))if err := L.DoString(script); err != nil {panic(err)}fmt.Println("Lua set your token to:", u.Token())// Output:// Hello from Lua, Tim!// Lua set your token to: 12345
}