【问题标题】: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.Pointerunsafe.Pointer 可以转换为任何指针类型。接下来,将unsafe.Pointer 转换为指向valFromSystem 指向的任何类型数据的指针,例如uint64

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

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

    uint64FromSystem = uint64(valFromSystem)
    

    但请记住,在将指针用作整数时,您应该使用类型 uintptr

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2019-07-14
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多