将 Go 结构体实例转换为 Lua 表格

我有一个 Go 结构体实例,并希望使用 GopherLua 将该实例传递给 Lua 方法。

我的 Go 代码如下所示:

dog := new(Animal)

runParam := lua.P{
    Fn:      L.GetGlobal("run"),
    NRet:    1,
    Protect: true,
}

mt := luar.MT(context.AppContext.LuaVM, dog)
userData := &lua.LTable{Metatable: *mt}
userData.Append(&lua.LUserData{Value: dog, Metatable: mt, Env: mt.LTable})

err = L.CallByParam(runParam, lua.LString("One"), userData)
if err != nil {
    fmt.Println("调用 Lua 方法时出错:" + err.Error())
}

我的 Lua 方法中,访问 Animal 参数的属性会出现错误“_attempt to index a non-table object_”。我的 Lua 代码如下:

function run(newName, ent) {
    print(ent.Name)
}

请问我哪里做错了?传递其他类型的参数(字符串、整数)工作正常。

点赞
用户2969272
用户2969272

以下是如何在文档中访问结构成员的完整示例:https://github.com/yuin/gopher-lua#user-defined-types

2019-03-23 18:11:05