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在使用指针作为整数时应该使用该类型.