大家好,欢迎来到IT知识分享网。
上篇文章已经讲过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)
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24328.html