Указатели в Go: можно ли обойти ограничения Go Pointer
Механизмы (в частности, unsafe.Pointer тип), предоставляемые стандартным unsafe пакетом, можно использовать для нарушения ограничений, наложенных на указатели в Go. Тип unsafe.Pointer как void* в C. Небезопасные способы не рекомендуется использовать, а в рабочих проектах использование пакета unsafe запрещается.
При использовании unsafe.Pointer сборщик мусора будет думать, что переменная уже не используется, и пометит память как неиспользуемую. В эту область памяти могут быть записаны другие данные другого типа. Такое поведение может привести к непредсказуемым последствиям в коде.
Делаем вывод, что ссылка — это номер байта в виртуальной памяти выделенной программы. То есть, он всего лишь указывает, с какого байта памяти начинаются данные, далее определяя размер данных по их типу, программа определяет конец данных в памяти. В Golang используется garbage collector (gc — сборщик мусора), он проходится по всем ссылкам. При увеличении количества ссылок растет нагрузка на сборщик мусора, что приводит к замедлению работы программы
Подробнее ознакомиться с особенностями синтаксиса Go ты можешь в следующих статьях: