【问题标题】:Assigning a type uintptr to uint64 in Golang在 Golang 中将类型 uintptr 分配给 uint64
【发布时间】:2014-06-05 20:10:14
【问题描述】:
我正在尝试将在 uintptr 类型的变量中找到的值分配给 Go 中的 uint64 变量。使用
myVar = valFromSystem
给我
不能在赋值中使用valFromSystem(类型uintptr)作为类型uint64
正在尝试
myVar = *valFromSystem
给我
valFromSystem 的间接无效(类型 uintptr)
有没有办法将 valFromSystem 指向的值拉出来分配给myVar?
【问题讨论】:
标签:
pointers
go
variable-assignment
【解决方案1】:
首先,将valFromSystem 转换为unsafe.Pointer。 unsafe.Pointer 可以转换为任何指针类型。接下来,将unsafe.Pointer 转换为指向valFromSystem 指向的任何类型数据的指针,例如uint64。
ptrFromSystem = (*uint64)(unsafe.Pointer(valFromSystem))
如果你只想获取指针的值(不取消引用),你可以使用直接转换:
uint64FromSystem = uint64(valFromSystem)
但请记住,在将指针用作整数时,您应该使用类型 uintptr。