Что такое unsafe.Pointer?

Senior
479 просмотров
AFK Offer AI

unsafe.Pointer — специальный тип указателя, который позволяет обойти систему типов Go. Через него можно преобразовать любой указатель в любой другой, читать/писать память напрямую, делать pointer arithmetic.

func float64bits(f float64) uint64 {
    return *(*uint64)(unsafe.Pointer(&f))
}

Используется в стандартной библиотеке (reflect, sync/atomic) и при интеграции с C. Правила безопасного использования описаны в документации unsafe — нарушение ведёт к UB. Компилятор не проверяет корректность операций с unsafe.Pointer, сборщик мусора может сломать указатели если нарушены правила. В прикладном коде почти никогда не нужен.

Следующий вопрос

Задача: reverse linked list — разверните односвязный список