Lua 调用 Go 语言 glua

码农软件 · 软件分类 · 其他开发相关 · 2019-10-24 16:59:35

软件介绍

自己写的一个go lua binding,为了使用方便,并没有封装很多lua api,只是是为了实现以下功能的简单封装:

  1. 可以将go函数注册到lua中去,扩展lua的函数库,参数自动转换,支持不定参数
  2. 可以同时执行多个lua脚本
  3. 从go中嗲用lua中的函数
  4. 支持bool、int、float、string类型的相互转换,其他类型可以传递到lua中,但是只能传回go中使用

这个binding很简单,下面的例子已经把所有能调用的API都调用了一遍:)

package main

import (
	"fmt"
	"glua"
)

type Int struct {
	I int
}
func NewInt() *Int {
	return &Int{10}
}
func (i Int) PrintInt(str string) {
	fmt.Println(str, i.I)
}

func main() {
	L := glua.NewState()
	
	L.Openlibs()

	var tlib = glua.Libfuncs{
		"gotest", // lib name
		map[string]interface{}{
			"NewInt":    NewInt,          // lua function name, go function
			"PrintInt":  (*Int).PrintInt, 
			"goprintln": fmt.Println,     // 不定参数函数
		},
	}
	if ok, err := L.Register(&tlib); !ok {
		fmt.Println(err.Error())
		return
	}
	// 执行lua语句
	L.Dostring(`gotest.PrintInt(gotest.NewInt(), "Int is")`) 
	// 执行lua脚本
	L.Dofile("test.lua")
	// 调用lua函数
	L.Call("gotest.goprintln", "Call lua function.", 123456)
}

lua脚本

--test.lua
gotest.goprintln(true, 123, "lua", gotest.NewInt())

如果使用上有什么问题,请直接给我反馈,谢谢!

本文地址:https://www.codercto.com/soft/d/17472.html

Intel系列微处理器体系结构、编程与接口

Intel系列微处理器体系结构、编程与接口

布雷, / 机械工业出版社 / 2005-4 / 99.00元

本书是讲述Intel微处理器的国外经典教材,已经多次再版,经过长期教学使用,吐故纳新,不断完善,内容丰富,体系完整。第6版中包含了微处理器领域的最新技术发展,涵盖了Pentium 4的内容。本书结合实例讲解工作原理,并给出小结和习题,既适合教学使用,也适合自学。书中许多实例都可以作为开发类似应用的模板和原型,极具实用价值。附录还给出了备查资料,供设计和调试汇编语言时使用。本书可作为高等院校计算机、......一起来看看 《Intel系列微处理器体系结构、编程与接口》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具