golang调用lua脚本
上篇文章已经讲过golua如何安装,本篇文章主要讲解golang如何利用golua调用lua脚本1:importimport "github.com/aarzilli/golua/lua"2:调用lua脚本的几个重要函数L := lua.NewState()//创建一个lua虚拟机L.DoFile("./xxx")//设置要调用的lua文件L.GetField(lua.LUA_GL
·
上篇文章已经讲过golua如何安装,本篇文章主要讲解golang如何利用golua调用lua脚本
1:import
import "github.com/aarzilli/golua/lua"
2:调用lua脚本的几个重要函数
L := lua.NewState() //创建一个lua虚拟机
L.DoFile("./xxx") //设置要调用的lua文件
L.GetField(lua.LUA_GLOBALSINDEX,"xxx") //获取lua脚本的符号
L.Call(arg1,arg2) //调用函数 第一个参数标识参数的个数,第二个参数标识返回值的个数
3:栗子
3.1:test.lua
--0返回值0参数
function GetStr()
print "world"
end
--多参数0返回值
function GetBigger(a,b)
if a >= b then
print (a)
else
print (b)
end
end
--0参数1返回值
function GetResult()
return "hello"
end
--多参数1返回值
function Compare(a,b)
if a >= b then
return a
else
return b
end
end
--1参数多返回值
function MoreReturn(a)
if (a == 10) then
return "world","hello","golang"
end
end
3.2:golang调用
func main() {
L := lua.NewState()
L.OpenLibs()
defer L.Close()
err := L.DoFile("./test.lua")
if err != nil{
fmt.Println("err",err.Error())
}
/*zero params zero results*/
L.GetField(lua.LUA_GLOBALSINDEX,"GetStr")
//L.PushInteger(1)
L.Call(0,0)
/*two params zero results*/
L.GetField(lua.LUA_GLOBALSINDEX,"GetBigger")
L.PushInteger(6)
L.PushInteger(3)
L.Call(2,0)
/*zero params one result*/
L.GetField(lua.LUA_GLOBALSINDEX,"GetResult")
L.Call(0,1)
ret1 := L.ToString(1)
fmt.Println(ret1)
L.Pop(1)
/*two params one result*/
L.GetField(lua.LUA_GLOBALSINDEX,"Compare")
L.PushInteger(7)
L.PushInteger(9)
L.Call(2,1)
ret2 := L.ToInteger(1)
fmt.Println(ret2)
L.Pop(1)
/*one params more results*/
L.GetField(lua.LUA_GLOBALSINDEX,"MoreReturn")
L.PushInteger(10)
L.Call(1,3)
ret3 := L.ToString(1)
ret4 := L.ToString(2)
ret5 := L.ToString(3)
fmt.Println(ret3,ret4,ret5)
}
更多推荐
已为社区贡献1条内容
所有评论(0)