Назначение типа 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
при использовании указателей в виде целых чисел.