【问题标题】:Converting Go Struct instance to Lua table将 Go Struct 实例转换为 Lua 表
【发布时间】:2019-08-13 21:17:52
【问题描述】:

我有一个 Go Struct 实例,并希望使用 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("Error while calling lua method: " + err.Error())
}

在我的 Lua 方法中,访问 Animal 参数的属性会导致错误尝试索引非表对象。我的 Lua 是这样的:

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

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

【问题讨论】:

    标签: go lua lua-table lua-userdata


    【解决方案1】:

    这里有一个完整的示例如何访问文档中的结构成员:https://github.com/yuin/gopher-lua#user-defined-types

    【讨论】:

      猜你喜欢
      • 2018-08-16
      • 2013-04-14
      • 2021-10-24
      • 2016-04-08
      • 2020-06-24
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多