| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
12年前发布

Lua 调用 Go 语言:glua

一个go lua binding,为了使用方便,并没有封装很多lua api,只是是为了实现以下功能的简单封装:

  1. 可以将go函数注册到lua中去,扩展lua的函数库,参数自动转换,支持不定参数
  2. 可以同时执行多个lua脚本
  3. 从go中嗲用lua中的函数
  4. 支持bool、int、float、string类型的相互转换,其他类型可以传递到lua中,但是只能传回go中使用

这个binding很简单,下面的例子已经把所有能调用的API都调用了一遍:)

package main    import (   "fmt"   "glua"  )    type Int struct {   I int  }  func NewInt() *Int {   return &Int{10}  }  func (i Int) PrintInt(str string) {   fmt.Println(str, i.I)  }    func main() {   L := glua.NewState()      L.Openlibs()     var tlib = glua.Libfuncs{    "gotest", // lib name    map[string]interface{}{     "NewInt":    NewInt,          // lua function name, go function     "PrintInt":  (*Int).PrintInt,      "goprintln": fmt.Println,     // 不定参数函数    },   }   if ok, err := L.Register(&tlib); !ok {    fmt.Println(err.Error())    return   }   // 执行lua语句   L.Dostring(`gotest.PrintInt(gotest.NewInt(), "Int is")`)    // 执行lua脚本   L.Dofile("test.lua")   // 调用lua函数   L.Call("gotest.goprintln", "Call lua function.", 123456)  }

lua脚本

--test.lua  gotest.goprintln(true, 123, "lua", gotest.NewInt())

项目主页:http://www.open-open.com/lib/view/home/1341242889090

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1341242889090.html
Lua Go语言 Lua开发