在GoLang中为uint64分配类型uintptr

时间:2014-04-21 17:56:24

标签: pointers go variable-assignment

我试图将uintptr类型的变量中找到的值赋给Go中的uint64变量。使用

myVar = valFromSystem

给了我

  

不能在赋值

中使用valFromSystem(类型uintptr)作为类型uint64

尝试

myVar = *valFromSystem

给了我

  

valFromSystem的无效间接(类型uintptr)

有没有办法拉出valFromSystem指向的值来分配给myVar?

1 个答案:

答案 0 :(得分:18)

首先,将valFromSystem投射到unsafe.Pointerunsafe.Pointer可以转换为任何指针类型。接下来,将unsafe.Pointer转换为指向valFromSystem指向的任何数据类型的指针,例如uint64

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

如果您只想获取指针的值(不取消引用它),您可以使用直接强制转换:

uint64FromSystem = uint64(valFromSystem)

虽然记住在将指针用作整数时应使用类型uintptr