
В прошлогоднем посте в блоге про пакет unique упомянули о некоторых новых функциях, которые тогда находились на стадии обсуждения. И теперь с Go 1.24 эти функции доступны всем разработчикам на Go.
Речь идёт о runtime.AddCleanup, которая добавляет функцию в очередь на выполнение, когда объект становится недоступным, и о типе weak.Pointer, который позволяет безопасно ссылаться на объект, не мешая сборщику мусора его удалить. Вместе эти две функции дают достаточно возможностей, чтобы создать свой собственный аналог пакета unique! Давайте разберёмся, чем они полезны и когда их стоит использовать.