package main

import (
"fmt"
"github.com/yuin/gopher-lua"
) func hello(L *lua.LState) int {
inputparam := L.ToInt(1)
fmt.Println("func hello get:",inputparam) //将返回参数压入栈中
L.Push(lua.LString("hello"))
//返回参数为1个
return 1
} func main() {
L := lua.NewState()
defer L.Close() //读写全局变量
L.SetGlobal("Age",lua.LNumber(8))
fmt.Println(L.GetGlobal("Age")) //生成一个带名字的table
var t = L.NewTable()
t.RawSetString("ID",lua.LNumber(110))
t.RawSetString("Name",lua.LString("LULU"))
L.SetGlobal("stu_table",t) //生成一个带名字的table2
if err := L.DoString(`
person = {
name = "Michel",
age = "31", -- weakly input
work_place = "San Jose",
role = {
{
name = "Administrator"
},
{
name = "Operator"
}
}
}
`); err != nil {
panic(err)
} //生成一个带名字的table3
var t3 = L.NewTable()
L.SetTable(t3,lua.LString("Height"),lua.LNumber(1009))
L.SetGlobal("late",t3) //读取table中的所有数据1
var r = L.GetGlobal("person")
fmt.Println(r.Type()) //读取table中的所有数据2
fmt.Println(L.GetTable(r,lua.LString("work_place")))
fmt.Println(L.GetTable(r,lua.LString("name"))) //读取table中的所有数据3 fmt.Println(L.GetField(r,"work_place"))
fmt.Println(L.GetField(r,"name"))
fmt.Println(L.Register) ////读取table中的所有数据4
fmt.Println(L.GetTable(t3,lua.LString("Height"))) //遍历读取table中的key,value
//待补充 //互相调用函数
//注册go函数
L.Register("hello",hello) // 生成一个lua函数
err := L.DoString(`
function info(n)
ret = hello(n)
return ret end`)
if err != nil{
panic(err)
} fn := L.GetGlobal("info")
if err := L.CallByParam(lua.P{
Fn: fn,
NRet: 1,
Protect: true,
}, lua.LNumber(10)); err != nil {
panic(err)
} //这里获取函数返回值
ret := L.Get(-1)
fmt.Println(ret) //从lua文件中读取lua字符串
err = L.DoFile("./test.lua")
if err != nil{
fmt.Println("err",err.Error())
panic(err)
} fmt.Println(L.GetGlobal("title")) title := L.GetGlobal("title")
fmt.Println(reflect.TypeOf(title))
fmt.Println(title) fmt.Println("Done!")
}

golang lua使用示例的更多相关文章

  1. C++用LuaIntf调用Lua代码示例

    C++用LuaIntf调用Lua代码示例 (金庆的专栏 2016.12) void LuaTest::OnResponse(uint32_t uLuaRpcId, const std::string& ...

  2. [Golang] lua战斗验证服务器

    我的另外一个开源项目,任何建议.指正错误和优化我都非常欢迎 baibaibai_000@163.com 简介 本项目是用go语言编写,结合cgo功能,支持高并发执行lua脚本的程序. 扩展 可以扩展成 ...

  3. 使用Golang + lua实现一个值班机器人

    我们在的项目组呢,有一项工作是,收邮件(很大程度上使用邮件是为了存个底),然后从我们的系统里边查一下相关信息,然后回复个邮件的工作.虽然工作量并不大,但是会把时间切的稀碎.为了拯救我的时间,所以做了一 ...

  4. PHP中使用redis执行lua脚本示例

    摸索了一下在PHP中如何使用redis执行lua脚本,写了一个脚本如下,供以后参考 <?php $redis = new Redis(); #实例化redis类 $redis->conne ...

  5. Redis执行Lua脚本示例

    Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...

  6. Redis脚本插件之————执行Lua脚本示例

    Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...

  7. [转]LUA C 互调

    组件工厂 ------3D游戏研发 LUA和C之间的函数调用 1.1 从C程序调用LUA函数 LUA的函数和普通变量一样也是First Class Variable类型,可以看作函数指针变量参与栈操作 ...

  8. golang动态加载原生代码思路

    golang动态加载原生代码思路(非plugin,非so文件.使用mmap形式运行机器码,可释放) 1.用go tool objdump,可以看到任意函数的机器码.汇编指令.偏移.(go源码下面有一个 ...

  9. 单机闭环 使用Nginx+Lua开发高性能Web应用

    [西域骆驼D1532101213]西域骆驼(VANCAMEL)D1532101213 休闲套脚鞋 卡其43[行情 报价 价格 评测]-京东 http://item.jd.com/1856564.htm ...

随机推荐

  1. Jenkins结合.net平台综合之完整示例项目

    前面每一个部分我们都是介绍的单个功能,这里介绍一个完整项目,本文中所用到的命令都放在了github示例代码仓库中 https://github.com/mrtylerzhou/netdevops 命令 ...

  2. Nunit的尝试

    (ps:没有代码,只有理论) 单元测试 单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,用于测试一个小的程序功能的行为是否正常,保证开发的功能子项能正确完成并实现其基本 ...

  3. JAVA_接口_默认方法&静态方法

    1.小结(注意): 1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰 2.接口中,没有构造方法,不能创建对象 3.接口中,没有静态代码块 ...

  4. js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法

    并不是越来越快, 而是越来越多;   $('button:first').click(function(){ // 记录ID var timerId = setInterval(function(){ ...

  5. 快速傅里叶变换(FFT)详解

    本文只讨论FFT在信息学奥赛中的应用 文中内容均为个人理解,如有错误请指出,不胜感激 前言 先解释几个比较容易混淆的缩写吧 DFT:离散傅里叶变换—>$O(n^2)$计算多项式乘法 FFT:快速 ...

  6. 【20190415】JavaScript-事件流与stopPropagation()、stopImmediatePropagation()的误区解析

    这两天仔细看了一下MDN上关于事件流机制和相关方法的文档,发现有个很大的误区.过去我一直以为stopPropagation()就是用来阻止事件冒泡的,甚至很多博客和菜鸟教程上都是这样写的.但实际上文档 ...

  7. Dynamics 365使用代码发送邮件给指定邮箱地址

    摘要: 微软动态CRM专家罗勇 ,回复303或者20190213可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 当然,首先要 ...

  8. 免费开源ERP-成功案例分析(2)

    Odoo用户案例 Odoo用户概要 关于Odoo全球的用户,我们来看一些数据: Odoo目前全球有300万使用者 Odoo系统上每天新创建的数据库超过1000个 Odoo和Word.Excel.Pow ...

  9. 混用Int与IntPtr导致GetProcAddress始终返回null

      注意NET某些类型在不同平台上的长度 NET中用句柄用得最多的是在DLLIMPORT中,混用int与intptr可能会导致某些API声明在X64平台中表现不正常,如 [DllImport(&quo ...

  10. TextView图文混排

    大家都知道,textView有一个setCompoundDrawables的方法来设置上下左右位置的图标,当然,也可以在xml布局文件中设置,然而问题来了,假如我们把图标放在左边,当我们让TextVi ...