Auf Github gibt es eine in Golang geschriebene virtuelle Lua-Maschine namens Gopher-Lua.
Der Autor hat in dem Dokument die Entsprechung zwischen den Datentypen in Lua und den Datentypen in Golang erläutert. Es ist erwähnenswert, dass der Typ mit L und der Name des Typs mit LT beginnt . (Empfohlenes Lernen: go)
Um Daten in Golang in Daten in Lua umzuwandeln, müssen sie in einen Typ konvertiert werden, der mit L beginnt:
str := "hello" num := 10 L.LString(str) L.LNumber(float64(num))
Daten in Lua sind konvertiert in Für Daten in Golang bietet das Projekt Funktionen wie ToInt und CheckString zur Konvertierung, aber der Typ muss im Voraus bekannt sein. Wenn Sie es nicht wissen, müssen Sie eine Typbeurteilung durchführen:
value := L.Get(1) switch value.Type() { case lua.LTString: case lua.LTTable: .... }
Das können Sie Verwenden Sie hier auch gopher -luar, um die Typkonvertierung zu erleichtern.
golang und lua rufen gegenseitig ihre Funktionen auf
Funktion in golang muss in func(L *lua.State. konvertiert werden ) int this Diese Form kann in Lua eingefügt werden. Der int des Rückgabeparameters stellt die Anzahl der Rückgabeparameter dar.
func hello(L *lua.State) int { //将返回参数压入栈中 L.Push(lua.LString("hello")) //返回参数为1个 return 1 } //注入lua中 L.SetGlobal("hello", L.NewFunction(hello))
Um die Lua-Funktion in Golang aufzurufen, müssen Sie diese Funktion zuerst im Lua-Skript definieren , und rufen Sie dann CallByParam:
//先获取lua中定义的函数 fn := L.GetGlobal("hello") if err := L.CallByParam(lua.P{ Fn: fn, NRet: 1, Protect: true, }, lua.LNumber(10)); err != nil { panic(err) } //这里获取函数返回值 ret := L.Get(-1)
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Golang Lua. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!