使用 gopher-lua 传参
时间: 2024-01-14 15:04:54 浏览: 155
gopher-lua:GopherLua:Go中Lua的虚拟机和编译器
在 gopher-lua 中,可以使用 `L.NewTable()` 创建一个 Lua 表,并使用 `L.SetField()` 方法往表中添加键值对,即可传递参数。例如:
```go
import (
"github.com/yuin/gopher-lua"
)
// 定义一个函数,接收两个参数
func myFunc(L *lua.LState) int {
arg1 := L.CheckString(1) // 获取第一个参数
arg2 := L.CheckNumber(2) // 获取第二个参数
// do something with arg1 and arg2
return 0 // 返回值个数
}
// 在 Lua 中调用 myFunc
func main() {
L := lua.NewState()
defer L.Close()
// 将 myFunc 注册到 Lua 中
L.SetGlobal("myFunc", L.NewFunction(myFunc))
// 创建一个 Lua 表,用于存放参数
table := L.NewTable()
L.SetField(table, "param1", lua.LString("hello"))
L.SetField(table, "param2", lua.LNumber(123))
// 调用 myFunc,传递参数
L.GetGlobal("myFunc")
L.Push(table)
L.Call(1, 0)
}
```
在上面的例子中,我们定义了一个名为 `myFunc` 的函数,该函数接收两个参数。在 `main` 函数中,我们将 `myFunc` 注册到 Lua 中,并创建一个 Lua 表,用于存放两个参数,并通过 `L.SetField()` 方法将参数添加到表中。最后,我们调用 `myFunc` 函数,将 Lua 表作为参数传递给该函数。
阅读全文