gopher-lua 在lua脚本中直接调用修改go中status

news/2025/1/11 0:26:27/

由于最近将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
}

 


http://www.ppmy.cn/news/809592.html

相关文章

YUM简介

YUM简介 什么是YUM,其作用是什么,主要支持哪几种方式提供软件源? 是一种基于“C/S”结构的RPM软件更新机制,所有的软件包由集中的软件仓库提供,能够自动分析并解决软件包之间的依赖关系。 支持的软件源主要包括&…

一款可定时发圈和标签群发的微信管理软件是什么样的?

什么是时间管理?它是一种科学的解释,意味着时间的流逝是不可阻挡的,但是可以通过掌握时间来获取更多的改变。那如何在有限的生命里而做更多有意义的事情呢?学习一下时间管理,你一定会从中得到启发和答案的。 1.先确定…

在 Golang 项目使用 GitHub fork 出来的项目(go mod 的 replace)

今天从 GitHub 克隆了一个别人的 Golang Markdown 项目,作了些修改,想使用自己的版本,发现不行,因为模块的路径不对,导致导入出错。 原来的模块路径和文件(go.mod): github.com/yuin/goldmark module gith…

GO的lua虚拟机 gopher-lua

https://github.com/yuin/gopher-luahttps://github.com/yuin/gopher-lua Lua 5.1 Reference Manual - contentshttp://www.lua.org/manual/5.1/ Extending Lua with Go types – Marin Atanasov Nikolov – A place about Open Source Software, Operating Systems and some …

Golang lua交互——gopher-lua中call函数使用

gopher-lua github: https://github.com/yuin/gopher-lua 这是目前github中最受欢迎的一个用于golang和lua交互的开源库,在做项目时需要用到其中的call函数,由于与c的lua_call有些区别,因此在这里介绍一下call函数的用法 golang和lua交互的…

【Go-Lua】Golang嵌入Lua代码——gopher-lua

Lua代码嵌入Golang Go版本:1.19 首先是Go语言直接调用Lua程序,并打印,把环境跑通 package mainimport lua "github.com/yuin/gopher-lua"func main() {L : lua.NewState()defer L.Close()// goerr : L.DoString(print("go g…

浅谈如何使用 github.com/yuin/gopher-lua

1、 gopher-lua 基础介绍 我们先开看看官方是如何介绍自己的: GopherLua is a Lua5.1( goto statement in Lua5.2) VM and compiler written in Go. GopherLua has a same goal with Lua: Be a scripting language with extensible semantics . It provides Go AP…

Go分享好的github插件和项目

插件 QQ、微信(WeChat)、支付宝(AliPay)的Go版本SDK http://github.com/go-pay/gopay发送邮件库 https://github.com/go-gomail/gomail读写Microsoft Excel https://github.com/360EntSecGroup-Skylar/excelize生成uuid https://…