我试图将uintptr类型的变量中找到的值赋给Go中的uint64变量。使用
myVar = valFromSystem
给了我
不能在赋值
中使用valFromSystem(类型uintptr)作为类型uint64
尝试
myVar = *valFromSystem
给了我
valFromSystem的无效间接(类型uintptr)
有没有办法拉出valFromSystem指向的值来分配给myVar?
答案 0 :(得分:18)
首先,将valFromSystem
投射到unsafe.Pointer
。 unsafe.Pointer
可以转换为任何指针类型。接下来,将unsafe.Pointer
转换为指向valFromSystem
指向的任何数据类型的指针,例如uint64
。
ptrFromSystem = (*uint64)(unsafe.Pointer(valFromSystem))
如果您只想获取指针的值(不取消引用它),您可以使用直接强制转换:
uint64FromSystem = uint64(valFromSystem)
虽然记住在将指针用作整数时应使用类型uintptr
。