Назначение типа uintptr для uint64 в GoLang

Я пытаюсь присвоить значение, найденное в переменной типа uintptr переменной uint64 в Go. Использование

myVar = valFromSystem

дает мне

не может использовать valFromSystem (тип uintptr) как тип uint64 при назначении

И попробуйте

myVar = *valFromSystem

дает мне

недействительный косвенный valFromSystem (тип uintptr)

Есть ли способ вывести значение, указанное valFromSystem, для назначения myVar?

Ответ 1

Сначала вставьте valFromSystem в unsafe.Pointer. unsafe.Pointer может быть помещен в любой тип указателя. Затем добавьте unsafe.Pointer в указатель на любой тип данных valFromSystem, на который указывает, например. a uint64.

ptrFromSystem = (*uint64)(unsafe.Pointer(valFromSystem))

Если вы просто хотите получить значение указателя (без его разыменования), вы можете использовать прямой прилив:

uint64FromSystem = uint64(valFromSystem)

Помните, что при использовании указателей в качестве целых чисел следует использовать тип uintptr.