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