Maison > développement back-end > Golang > le corps du texte

Comment utiliser Golang Lua

(*-*)浩
Libérer: 2019-12-13 13:30:05
original
3622 Les gens l'ont consulté

Comment utiliser Golang Lua

Il existe une machine virtuelle Lua écrite en golang sur github, appelée gopher-lua.

L'auteur a expliqué dans le document la correspondance entre les types de données dans Lua et les types de données dans Golang. Il est à noter que le type commence par L et le nom du type commence par LT. . (Apprentissage recommandé : go)

Pour convertir des données en golang en données en lua, il faut les convertir en un type commençant par L :

str := "hello"
num := 10
L.LString(str)
L.LNumber(float64(num))
Copier après la connexion

Les données en lua sont converti en Pour les données en golang, le projet fournit des fonctions telles que ToInt et CheckString pour la conversion, mais le type doit être connu à l'avance. Si vous ne le savez pas, vous devez effectuer un jugement de type :

value := L.Get(1)
switch value.Type() {
case lua.LTString:
case lua.LTTable:
....
}
Copier après la connexion

Vous pouvez. utilisez également gopher ici -luar pour faciliter la conversion de type

golang et lua s'appellent mutuellement

La fonction en golang doit être convertie en func(L *lua.State. ) int this Ce formulaire peut être injecté dans Lua. L'int du paramètre de retour représente le nombre de paramètres de retour.

func hello(L *lua.State) int {
     //将返回参数压入栈中
     L.Push(lua.LString("hello"))
     //返回参数为1个
     return 1
}
//注入lua中
L.SetGlobal("hello", L.NewFunction(hello))
Copier après la connexion

Pour appeler la fonction Lua en golang, vous devez d'abord définir cette fonction dans le script Lua. , puis appelez 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)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal