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. 痞子衡嵌入式:第一本Git命令教程(6)- 日志(log/reflog/gitk)

    今天是Git系列课程第六课,上一课我们学会了Git本地提交,今天痞子衡要讲的是如何查看Git本地历史提交. 当我们在仓库里做了很多次提交之后,免不了需要回看提交记录,看看自己之前的改动.有三种Git命 ...

  2. HTTP与HTTPS的理解

    最近一直也在面试的过程中,可能由于各个方面的问题,导致没有时间抽出更新博客,今天开始陆续更新!!!以后自己的博客,会向React Native,swift ,以及H5延展,成为一个全栈的技术人员.本篇 ...

  3. 《CLR via C#》读书笔记(一)——CLR的执行模式

    前言 万事开头难,很早之前就想写博客记录些东西,迟迟未行动,甚是遗憾.原因诸多,大体上无非都是懒.没意志力等等.这次从自己的读书笔记开始,兴许能够有所改变. 一.CLR概念 CLR(Common La ...

  4. [日常] Go-逐行读取文本信息

    go逐行读取文本信息:1.os包提供了操作系统函数的不依赖平台的接口,Open方法打开一个文件用于读取,func Open(name string) (file *File, err error)2. ...

  5. php 使用Glob() 查找文件技巧

    定义和用法 glob() 函数返回匹配指定模式的文件名或目录. 该函数返回一个包含有匹配文件 / 目录的数组.如果出错返回 false. 参数 描述 file 必需.规定检索模式. size 可选.规 ...

  6. 解决GJson 获取web api数据出现Not a JsonObject问题

    服务器端web api服务采用asp.net web api编写,对请求的数据序列化成Json格式的字符串进行传递. 客户端采用Java进行接收处理,处理采用GJson进行解析,出现Not a Jso ...

  7. npm缺少css-loader,/style-compiler,stylus-loader问题,npm没有权限无法全局更新问题【已解决】

    ERROR in ./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?{"vue":tru ...

  8. idea连接服务器上传jar并运行

    .打开idea tools-deployment-configuration..                                   .打开如图 点击 + 号           .如 ...

  9. ssh服务突然连接不了案例总结

    ssh服务突然连接不了案例总结   一台Oracle数据库服务器(Linux版本为Oracle Linux Server release 5.7)今天中午突然出现短暂的ssh连接不上的情况,ssh连接 ...

  10. c/c++ 网络编程 UDP 改变IP地址

    网络编程 UDP 改变IP地址 在程序里动态改变主机的IP地址 1,改变ipv4的地址 #include <stdio.h> #include <string.h> #incl ...