import
"github.com/aarzilli/golua/lua"
2:呼叫lua指令碼的幾個重要函式
l := lua.newstate() //建立乙個lua虛擬機器
l.dofile("./***") //設定要呼叫的lua檔案
l.getfield(lua.lua_globalsindex,"***") //獲取lua指令碼的符號
l.call(arg1,arg2) //呼叫函式 第乙個引數標識引數的個數,第二個引數標識返回值的個數
3:栗子
3.1:test.lua
--0返回值0引數
function
getstr()
print "world"
end--多引數0返回值
function
getbigger(a,b)
ifa >= b then
print (a)
else
print (b)
endend--0引數1返回值
function
getresult()
return
"hello"
end--多引數1返回值
function
compare(a,b)
ifa >= b then
return
aelse
return b
endend--1引數多返回值
function
morereturn(a)
if (a == 10) then
return
"world","hello","golang"
endend
3.2:golang呼叫
func main()
/*zero params zero results*/
l.getfield(lua.lua_globalsindex,"getstr")
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)
}
github golang呼叫lua指令碼之安裝golua
tar xzvf ncurses 5.9 tar gztar xzvf readline 6.2 tar gz2.2 進入解壓好的目錄,執行 configure make install安裝完成 3 安裝lua 5.1.4.tar.gz 3.1 解壓 tar xzvf lua 5.1 4.tar g...
redis呼叫lua指令碼
在redis中很多基本操作都是原子操作 但是缺少事務的概念,所幸的是redis支援lua指令碼,可以利用lua指令碼實現事務特性 執行比 較對應key值大小,更新較大值 的lua指令碼 param key param time return public object updatehigherint...
Lua 指令碼呼叫 C 函式
上篇說到 c 程式裡呼叫lua 函式,此篇講lua 指令碼裡呼叫c 函式。lua要呼叫c 程式裡的函式,這些函式必須有同樣的原型 typedef int luafunc lua state l 結合工作上的業務來實現乙個簡單的lua 呼叫 c 函式的例子,業務是上這樣的,有一可攜式裝置向我們的裝置傳...