csdn之前的编辑器太烂了,重新写了个markdown版本的:http://blog.youkuaiyun.com/sryan/article/details/52251264
有一个需求,就是使用go语言来实现一些基本模块,使用lua来实现基本逻辑,于是就有了在lua中调用go函数的需求。
go的资料非常少,好在go可以嵌入c语言,使得这个实现变得有可行性。最终使用了lua中的full userdata来实现这个东西。将go中的函数全部封装成userdata,供lua调用。这样是可行的,由于userdata可以设置metatable,metatable内可以设置一个原方法__call,那么如下的调用:
func(1, 3)

本文介绍了如何在Lua中调用Go函数,利用Go的C语言嵌入特性,通过Lua的full userdata和metatable的__call方法实现调用。在Go中定义结构并记录Lua状态,然后在C代码中注册Go函数,创建userdata并设置metatable,最终实现在Lua脚本中调用Go代码的功能。
最低0.47元/天 解锁文章
595

被折叠的 条评论
为什么被折叠?



