分享
  1. 首页
  2. 文章

Golang绑定Lua脚本,小小封装一下

u013125772 · · 5642 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

好吧,我承认我有点无聊!


原来的时候,自己用C写过一个小东东,里面集成了lua脚本,lua主要用于配置系统,感觉很不错。


最近折腾了一段时间的Golang,写代码的感觉,的确比C爽,所以想着用Golang写个爬小说的稍微通用的爬虫,基本功能搞定后,发现配置还是用lua比较方便,便试着封装一下lua c-api的bindings,整了半天,发现挺累的,就去github搜了下,发现了几位前辈写的东东,但是感觉都不太满意,最后终于通过golang官网找到了这个


恩,github.com/aarzilli/golua,这个封装,相对完整。试用了一下,和C-API基本一致,问题是,从配置文件里面取个东东,依然和C-API一样,繁琐无比。哎,之后只能自己再封装一下算了。整了2小时,感觉不错,读取基本配置没问题了。先贴出来看看,以后慢慢优化吧!


file: test.lua

w = 100
h = 100.2
str="hello world"
tb = {1,2,3,4,sd={n="twkun",p="password"},v="value",list={1,2,4,5,6,7,8}}

file: test.go


小结:
package main
import (
 "./LuaWrapper"
 //"twkun/tool/LuaWrapper"
 "fmt"
)
func main () {
 lua := new(LuaWrap.LuaWrap)
 lua.Init()
 lua.DoFile("test.lua")
 defer lua.Close()
 fmt.Println(lua.GetInteger("w"))
 fmt.Println(lua.GetNumber("h"))
 fmt.Println(lua.GetData("h").(float64))
 fmt.Println(lua.GetString("str"))
 var tb LuaWrap.ILuaTable = lua.GetTable("tb")
 fmt.Println(tb.GetString("v"))
 tf := tb.GetTable("sd")
 //tf := tb.GetData("sd").(LuaWrap.ILuaTable) //ok
 fmt.Println(tf.GetString("n"))
 fmt.Println(tf.GetData("n").(string))
 fmt.Println(tb.GetTable("sd").GetString("p"))
 fmt.Println(tb.GetTable("sd").GetData("p").(string))
 n := tb.GetSize()
 fmt.Println(n)
 for i := 1;i<= n;i++ {
 fmt.Println(tb.GetIndex(i).(float64))
 }
 fmt.Println()
 tf = tb.GetTable("list")
 n = tf.GetSize()
 fmt.Println(n,"\n")
 for i := 1;i<= n;i++ {
 fmt.Println(tf.GetIndex(i).(float64))
 }
}

测试代码,随便写写,命名那个差呀,以后要注意!改天有空整理一下,发github上。


感觉不错,哎,周末年会,无语一下,又去滇池边,无比~~~

create by twkun
2013年12月13日


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u013125772

查看原文:Golang绑定Lua脚本,小小封装一下

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5642 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏