前言

gopher-lua中也有c++中的lua.next函数,不过目前我没有查到gopher-lua的next函数用法,因此这里用的是func (ls *LState) ForEach(tb *LTable, cb func(LValue, LValue))这个函数。

代码

在这里,我们从lua文件中取一个"mytable"的table结构,并且把其中元素存储到map[string]string中
Lua代码:


mytable = {}
mytable["key1"] = "value1"
mytable["key2"] = "value2"
mytable["key3"] = "value3"

这里我们展示下ForEach函数怎么用

package mainimport ("github.com/golang/glog""github.com/yuin/gopher-lua"
)type LuaMatcher struct{LuaState    *lua.LState
}func NewLuaMatcher() *LuaMatcher{return &LuaMatcher{LuaState:  nil,}
}func (L *LuaMatcher)Init(path string) bool{L.LuaState = lua.NewState()err := L.LuaState.DoFile(path)if err != nil{glog.Error("lua init fail")return false}return true
}func (L *LuaMatcher) PrintKeyValue(L1 lua.LValue, L2 lua.LValue){  if lv, ok := L2.(*lua.LTable); ok{lv.ForEach(L.GetResult) //递归调用ForEach函数} else {fmt.Println("k = ", L1). //注意这里是函数传进来的参数fmt.Println("v = ", L2)}
}int main(){L := new(LuaMatcher)L.Init("mylua.lua") // path是你存放lua文件的路径Table := L.L.GetGlobal("mytable") //获取tableL.L.Push(Table)t := L.L.CheckTable(-1)t.ForEach(L.PrintKeyValue)//遍历打印
}

结果:

key2 value2
key3 value3
key1 value1

golang gopher-lua 遍历table元素相关推荐

  1. Lua 的table遍历 【转】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rangercyh.blog.51cto.com/1444712/1032925 ...

  2. lua 5.3.5 使用pairs遍历table时, 遍历结果为什么是随机的

    目录 1 遍历结果是随机的 2 为什么会是随机的 2.1 简单介绍table 2.1.1 数组部分 2.1.2 散列表部分 2.2 获取key在散列表中的位置 2.2.1 首先介绍几个宏 2.2.2 ...

  3. Lua 学习笔记:C API 遍历 Table

    前情提要 Lua 通过一个虚拟栈与 C 的交互,正数索引自底向上取值,负数索引自顶向下取值. Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值.使用 C API 访问 Tabl ...

  4. Lua中,泛型for循环遍历table时,ipairs和pairs的区别

    根据table型变量key是否为连续数字,如果是则称为数组型table,如果不是则称为非数组型table. 事实胜于雄辩,接下来通过实验来区分两组迭代器的区别. 首先给出pairs和ipairs在数组 ...

  5. lua中table函数库

    一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep,  start, end) concat是c ...

  6. lua使用table例子

    table在Lua中唯一的数据结构,其它语言提供的各种数据结构Lua都是用table来实现的 .下面是一个C API操作table的例子. #include <stdio.h> #incl ...

  7. lua之table的使用

    本文对从数据结构,存储和使用三个角度对lua之table的使用进行小结. 数据结构: table是lua的一种数据结构,可以用来存放各种类型的元素,例如可以创建数组和字典,以及二者混合的数据结构, 例 ...

  8. Golang 和 lua 相遇会擦出什么火花?

    在 GitHub 玩耍时,偶然发现了 gopher-lua ,这是一个纯 Golang 实现的 Lua 虚拟机.我们知道 Golang 是静态语言,而 Lua 是动态语言,Golang 的性能和效率各 ...

  9. 【游戏开发解答】Unity使用lua将table转为树结构,以多级折叠内容列表的UI形式展现(树结构 | UGUI | 折叠展开 | lua)

    文章目录 一.前言 二.Unity lua环境 三.树节点 1.创建脚本:TreeNode.lua 2.封装节点 四.树逻辑 1.创建脚本:TreeLogic.lua 2.构造测试数据 3.构造树 4 ...

最新文章

  1. matlab 用fplot和plot作出函数图像
  2. linux shell 合并文本
  3. php+nginx上传文件配置
  4. java 索引排序_Java培训MySQL之排序分组优化索引的选择
  5. 【JSOI2008】星球大战 (并查集)
  6. HDU1283 最简单的计算机【模拟】
  7. linux环境下用TcpDump抓包分析总结
  8. 使用React和Spring Boot构建一个简单的CRUD应用
  9. memcpy/memset函数的c语言实现
  10. 项目之爬虫入门(豆瓣TOP250)
  11. 《学习之道》第十七章保持平静
  12. Linux环境下FFMPEG的安装与配置
  13. 电工最实用口诀 背会就是老电工
  14. Android Studio开发引入Speex
  15. PR值与网站权重的关系
  16. 美国把互联网服务器都关了,到底对我们有什么影响?
  17. 剪刀石头布(自留底)01
  18. 【区块链技术与应用】(三)
  19. java简单计算器课程设计报告_JAVA课程设计之计算器设计报告
  20. 音视频技术开发周刊 | 229

热门文章

  1. STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)
  2. python 创建一个空向量,python 创建一个空向量_python 创建一维的0向量实例
  3. Tensorflow 优化器(optimizer)
  4. MYSQL修改数据库密码
  5. 极光 · 底层逻辑 · doubleの浮点误差
  6. win7计算机启动修复,win7启动修复功能无法正常进入系统的解决方法
  7. PGP加密技术应用(含安装包)
  8. 谷歌服务,想说爱你不容易
  9. js 判断字符串是否全是数字
  10. 332B. Maximum Absurdity