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

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

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


原来的时候,自己用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

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