GO的lua虚拟机 gopher-lua

news/2025/1/11 4:26:07/

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 random thoughtsicon-default.png?t=M0H8http://dnaeon.github.io/extending-lua-with-go-types/ 

 go 中使用 lua

package mainimport (lua "github.com/yuin/gopher-lua"
)func main() {l := lua.NewState()defer l.Close()if err := l.DoString(`print("Hello World")`); err != nil {panic(err)}
}
L := lua.NewState()
defer L.Close()
if err := L.DoFile("hello.lua"); err != nil {panic(err)
}

lua 中使用 go

mymodule.go

package mymoduleimport ("github.com/yuin/gopher-lua"
)func Loader(L *lua.LState) int {// register functions to the tablemod := L.SetFuncs(L.NewTable(), exports)// register other stuffL.SetField(mod, "name", lua.LString("value"))// returns the moduleL.Push(mod)return 1
}var exports = map[string]lua.LGFunction{"myfunc": myfunc,
}func myfunc(L *lua.LState) int {return 0
}

mymain.go

package mainimport ("./mymodule""github.com/yuin/gopher-lua"
)func main() {L := lua.NewState()defer L.Close()L.PreloadModule("mymodule", mymodule.Loader)if err := L.DoFile("main.lua"); err != nil {panic(err)}
}

main.lua

local m = require("mymodule")
m.myfunc()
print(m.name)


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

相关文章

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://…

前后端分离项目问题总结

这里记录一下,我在写一个自己设计的项目时遇到的几个问题!!! 1、Session获取为null 需求:session保存验证码,在session中验证验证码是否正确 解释: 前端跨域访问后端接口, 在浏览器的安全策略…

申请和注销设备号的方法

一、Linux内核对设备的分类 linux的文件种类: -:普通文件 d:目录文件 p:管道文件 s:本地socket文件 l:链接文件 c:字符设备 b:块设备 Linux内核按驱动程序实现模型框架的不…

S3C2440 ARM920T CPU

S3C2440 ARM920T CPU 支持大端/小端模式。共同有8个存储器BANK,每个BANK为128M。BANK0~BANK6为固定起始地址。BANK7可编程BANK起始地址和大小,其开始地址是BANK6的结束地址,灵活可变。BANK0~BANK5用于ROM或者SRAM,BANK6、BANK7用…

linux驱动38:后备高速缓存

设备驱动程序常常会反复地分配同一大小的内存块&#xff0c;为这些反复使用的内存块增加某些特殊的内存池——后备高速缓存。 linux内核的高速缓存管理称为slab分配器&#xff0c;头文件<linux/slab.h>&#xff0c;类型struct kmem_cache。 一、api接口&#xff1a; 1…