github上有一个用golang编写的lua虚拟机,名字叫做gopher-lua。

lua中的数据类型与golang中的数据类型对应关系作者已经在文档中说明,值得注意的是类型是以L开头的,类型的名称是以LT开头的。 (推荐学习:go)

golang中的数据转换为lua中的数据就必须转换为L开头的类型:

str := "hello"num := 10L.LString(str)L.LNumber(float64(num))

lua中的数据转换为golang中的数据,项目提供了ToInt,CheckString之类的函数来进行转换,但是这都是必须提前知道类型的,如果不知道就必须进行类型判断:

value := L.Get(1)switch value.Type() {case lua.LTString:case lua.LTTable:....}

这里还可以使用gopher-luar来方便的进行类型转换.

golang和lua互相调用函数

golang中的函数必须转换为func(L *lua.State) int这种形式才能注入lua中,返回参数的int代表了返回参数的个数.

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

在golang中调用lua函数,lua脚本中需先定义这个函数,然后调用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)

更多相关文章

  1. golang不可重入函数实现
  2. golang的函数怎么写
  3. golang如何判断数据类型
  4. golang数据类型有哪些
  5. golang 如何类型转换
  6. go语言数据类型转换教程
  7. 从go语言闭包谈函数式编程
  8. go语言中函数与方法介绍
  9. golang怎么把字符串转成Int类型

随机推荐

  1. Android通讯
  2. 状态开关按钮ToggleButton
  3. android 发送短信
  4. AnimatedStateListDrawable介绍
  5. Android之列表对话框
  6. Android图片旋转实例
  7. Android中模拟点击软件的实现原理探究
  8. android微博客户端源代码
  9. Android中的android:layout_weight讲解
  10. android 相对布局