Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 5

ИМХО пример ошибки в дизайне языка. Лучше бы сделать аннотации/атрибуты в языке, чем вот так на комментариях.

Меня ещё пугает, что эта ошибка потом лезет в утилиты, написанные на Go. Помню очень стрессовую историю, когда в итоге поругался с девопсом из за того, что вот подобного вида комментарии поменял из yaml файла в gitops репе. Оказалось, что его нельзя было менять в таком виде, но ведь это комментарий же.

С тех пор не очень хочется лишний раз связываться со штуками типа fluxcd, где такое вот бывает.

которая позволяет вызывать приватные функции и обращаться к закрытым переменным других пакетов

Паблик Морозов? 😲

Наверное это может нужно в каких-то редких кейсах, но не тех которые приведены в качестве примера.

Можно использовать даже для синхронизации между пакетами без публичных API»

Вот это меня больше всего и пугает. Приватные функции и публичные методы/функции – то что заставляет думать разработчика. Если пакет строится так чтобы потом приложение дергало любую функцию golink + unsafe, то быть потом беде.

Ну и чтоб было максимально душно: помниться из-за одного пропущенного указателя при unsafe+reflect потекла память, искали всем селом целый день. С того случая сформировалось мнение, что unsafe нужен тогда когда нет адекватной заменя, например какой-нибудь кольцевой буфер для создания shared memory

Стоило упомянуть, что чаще всего это используется для линкования функций из недр рантайма и исходников языка, ради ансейф черной магии.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий