我有一个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)
}
请问我做错了什么?传递其他类型(string,int)的参数工作正常。
这里有一个完整的示例如何访问文档中的struct成员:https://github.com/yuin/gopher-lua#user-defined-types