Как работает runtime.SetFinalizer?

Middle+
313 просмотров
AFK Offer AI

runtime.SetFinalizer(obj, finalizer) привязывает callback к объекту. Когда GC определяет что obj unreachable, вместо освобождения он ставит obj в очередь финализации. Специальная горутина достаёт из очереди и вызывает finalizer(obj). После вызова финализатор снимается — объект станет собираемым в следующем GC цикле. Ограничения: obj должен быть указателем на heap-объект, финализатор не может ссылаться на obj через замыкание (иначе obj останется reachable), порядок вызова финализаторов не гарантирован.

Следующий вопрос

Как создать custom error с контекстом?