在GoLang中为uint64分配类型uintptr

Bar*_*rim 10 pointers variable-assignment go

我正在尝试将在uintptr类型的变量中找到的值分配给Go中的uint64变量.运用

myVar = valFromSystem
Run Code Online (Sandbox Code Playgroud)

给我

不能在赋值时使用valFromSystem(类型uintptr)作为类型uint64

并尝试

myVar = *valFromSystem
Run Code Online (Sandbox Code Playgroud)

给我

valFromSystem的无效间接(类型uintptr)

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

fuz*_*fuz 18

首先,valFromSystem投入一个unsafe.Pointer.一个unsafe.Pointer可以被铸造成任何指针类型.接下来,将其unsafe.Pointer转换为指向任何类型的数据valFromSystem点的指针,例如uint64.

ptrFromSystem = (*uint64)(unsafe.Pointer(valFromSystem))
Run Code Online (Sandbox Code Playgroud)

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

uint64FromSystem = uint64(valFromSystem)
Run Code Online (Sandbox Code Playgroud)

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