golang lua使用示例
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使用示例的更多相关文章
- C++用LuaIntf调用Lua代码示例
C++用LuaIntf调用Lua代码示例 (金庆的专栏 2016.12) void LuaTest::OnResponse(uint32_t uLuaRpcId, const std::string& ...
- [Golang] lua战斗验证服务器
我的另外一个开源项目,任何建议.指正错误和优化我都非常欢迎 baibaibai_000@163.com 简介 本项目是用go语言编写,结合cgo功能,支持高并发执行lua脚本的程序. 扩展 可以扩展成 ...
- 使用Golang + lua实现一个值班机器人
我们在的项目组呢,有一项工作是,收邮件(很大程度上使用邮件是为了存个底),然后从我们的系统里边查一下相关信息,然后回复个邮件的工作.虽然工作量并不大,但是会把时间切的稀碎.为了拯救我的时间,所以做了一 ...
- PHP中使用redis执行lua脚本示例
摸索了一下在PHP中如何使用redis执行lua脚本,写了一个脚本如下,供以后参考 <?php $redis = new Redis(); #实例化redis类 $redis->conne ...
- Redis执行Lua脚本示例
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...
- Redis脚本插件之————执行Lua脚本示例
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...
- [转]LUA C 互调
组件工厂 ------3D游戏研发 LUA和C之间的函数调用 1.1 从C程序调用LUA函数 LUA的函数和普通变量一样也是First Class Variable类型,可以看作函数指针变量参与栈操作 ...
- golang动态加载原生代码思路
golang动态加载原生代码思路(非plugin,非so文件.使用mmap形式运行机器码,可释放) 1.用go tool objdump,可以看到任意函数的机器码.汇编指令.偏移.(go源码下面有一个 ...
- 单机闭环 使用Nginx+Lua开发高性能Web应用
[西域骆驼D1532101213]西域骆驼(VANCAMEL)D1532101213 休闲套脚鞋 卡其43[行情 报价 价格 评测]-京东 http://item.jd.com/1856564.htm ...
随机推荐
- 解读经典《C#高级编程》泛型 页114-122.章4
前言 本章节开始讲解泛型..Net从2.0开始支持泛型,泛型不仅是C#的一部分,也与IL代码紧密集成.所以C#中泛型的实现非常优雅.相对于C#,Java是后期引入的泛型,受限于最初的设计架构,就实现的 ...
- [转]Chrome 错误代码:ERR_UNSAFE_PORT
本文转自:https://blog.csdn.net/testcs_dn/article/details/39186225 最近在用Nginx发布多个站点测试,使用了87.88端口, 88端口访问正常 ...
- 如何去掉C#字符串中的所有空格(转载)
如何去掉C#字符串中的所有空格 来源:https://www.cnblogs.com/donchen/p/8966059.html 字符串行数Trim()可以去掉字符串前后的空格,如: C# Cod ...
- [Go] golang类型断言
类型断言有点像向下转型,接口类型转到具体的实现实例类型上类型断言是一个使用在接口值上的操作.语法上它看起来像x.(T)被称为断言类型,这里x表示一个接口的类型和T表示一个类型 package main ...
- Mysql 连接数,最大并发数设置
项目中可能会遇到MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散 ...
- Java开发笔记(六十八)从泛型方法探究泛型的起源
前面介绍各种容器之时,通过在容器名称后面添加包裹数据类型的一对尖括号,表示该容器存放的是哪种类型的元素.这样一来总算把Java当中的各类括号都凑齐了,例如包裹一段代码的花括号.指定数组元素下标的方括号 ...
- GNOME图形界面的基本操作
成功登录进入CentOS系统之后,我们首先看到的桌面就是GNOME图形界面,下面来看一下相关的基本操作. 个性化设置 1,设置屏幕分辨率 进入菜单 2,更换桌面背景 进入下面菜单. 选择一张背景图片, ...
- 前端入门10-JavaScript语法之对象
声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...
- dsu on tree入门
先瞎扯几句 说起来我跟这个算法好像还有很深的渊源呢qwq.当时在学业水平考试的考场上,题目都做完了不会做,于是开始xjb出题.突然我想到这么一个题 看起来好像很可做的样子,然而直到考试完我都只想出来一 ...
- TortoiseSVN 安装时出现 please install the universal crt
解决步骤: 1.打开 https://www.microsoft.com/zh-cn/ 2.搜索 universal crt (hotfix kb2999226) 3.点击链接 4.选择适合自己的版本 ...