Heim > Backend-Entwicklung > Golang > So verwenden Sie Golang Lua

So verwenden Sie Golang Lua

(*-*)浩
Freigeben: 2019-12-13 13:30:05
Original
3681 Leute haben es durchsucht

So verwenden Sie Golang Lua

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))
Nach dem Login kopieren

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:
....
}
Nach dem Login kopieren

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))
Nach dem Login kopieren

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)
Nach dem Login kopieren
auf

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage