func main() { L := C.luaL_newstate() defer C.lua_close(L) C.luaL_openlibs(L) /* Load Lua libraries */ C.luaopen_cmsgpack(L) sumS := C.CString(sum) defer C.free(unsafe.Pointer(sumS)) C.luaL_loadstring(L, sumS) msg, _ := msgpack.Marshal([]int{1, 2, 3, 4, 5, 6}) C.lua_pushstring(L, cptr(msg)) dstr := C.CString("mpdata") defer C.free(unsafe.Pointer(dstr)) C.luaSetglobal(L, dstr) C.luaExecute(L) sum := C.lua_tonumber(L, -1) fmt.Println(sum) // Output: 21 }
// Closes the lua context. func (e *ExecutionEngine) Destroy() { if e.state != nil { C.lua_close(e.state) e.state = nil } if e.iterator != nil { e.SetIterator(nil) } }
// lua_close func (L *State) Close() { C.lua_close(L.s) }
// Destroys all objects in the given Lua state (calling the corresponding // garbage-collection metamethods, if any) and frees all dynamic memory // used by this state. On several platforms, you may not need to call // this function, because all resources are naturally released when the // host program ends. On the other hand, long-running programs, such as // a daemon or a web server, might need to release states as soon as they // are not needed, to avoid growing too large. func (this *State) Close() { C.lua_close(this.luastate) }
// lua_close func (L *State) Close() { C.lua_close(L.s) unregisterGoState(L) }
// Destroys all objects in the given Lua state (calling the corresponding // garbage-collection metamethods, if any) and frees all dynamic memory // used by this state. On several platforms, you may not need to call // this function, because all resources are naturally released when the // host program ends. On the other hand, long-running programs, such as // a daemon or a web server, might need to release states as soon as they // are not needed, to avoid growing too large. func (s *State) Close() { C.lua_close(s.l) }
// Close close the lua vm func (l *Lua) Close() { C.lua_close(l.State) }
// 释放lua_stat func (L *State) free() { log.Printf("Free %v.\n", *L) C.lua_close(L.s) }
func (vm *VM) Close() { C.lua_close(vm.globalL) vm.globalL = nil }
func Close(s *State) { C.lua_close((*C.lua_State)(s)) }