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

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

myVar = valFromSystem

дает мне

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

и пытаются

myVar = *valFromSystem

дает мне

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

есть ли способ вытащить значение, на которое указывает valFromSystem, чтобы назначить аргумент myVar?

1 ответов


во-первых, cast valFromSystem на unsafe.Pointer. Ан unsafe.Pointer может быть преобразован в любой тип указателя. Далее, бросьте unsafe.Pointer в указатель на любой тип данных valFromSystem указывает, например,uint64.

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

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

uint64FromSystem = uint64(valFromSystem)

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