У меня есть экземпляр Go Struct, и я хотел бы передать его в метод Lua, используя GopherLua.
Мой код 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 выдается ошибка попытка проиндексировать объект не из таблицы . Мой Луа выглядит так:
function run(newName, ent) {
print(ent.Name)
}
Пожалуйста, что я делаю не так? Передача другого типа (string, int) параметра работает нормально.