Skip to content

Latest commit

 

History

History
34 lines (26 loc) · 779 Bytes

File metadata and controls

34 lines (26 loc) · 779 Bytes
package main

import (
	"fmt"
	"runtime"
	"time"
)

type Resource struct {
	name string
}

func finalizeResource(r *Resource) {
	fmt.Printf("Finalizing resource: %s\n", r.name)
}

func main() {
	r := &Resource{name: "MyResource"}

	// Устанавливаем финализатор для объекта r
	runtime.SetFinalizer(r, finalizeResource)

	// Симулируем выход за пределы области видимости
	r = nil

	// Форсируем сборку мусора (не рекомендуется использовать в продакшене)
	runtime.GC()

	// Дадим время для выполнения финализации
	// В реальной программе это не нужно
	time.Sleep(time.Second)
}