如何将类型 uintptr 转换为 *string?

uintptr我正在尝试进行从到 的转换, *string但到目前为止似乎还没有奏效。我将值作为 uintptr 获取,需要将其作为 *string 传递。我正在工作的值代表文件目录中的地址

到目前为止,这是我尝试过的:

如果 x 是 uintptr 并且 y 是 *string

y = string(x)

  • 不能在赋值中使用 string(x)(字符串类型的值)作为 *string 类型

y = *string(x)

  • 不能间接 string(x)(字符串类型的值)

*y = string(x)

  • 从 uintptr 到字符串的转换产生一串一个符文,而不是一串数字(你是说 fmt.Sprint(x) 吗?)


繁星coding
浏览 145回答 1
1回答

LEATH

您必须使用unsafe.Pointer将 a 转换uintptr为 Go 指针值。示例:import (    "fmt"    "unsafe")func main() {    var s *string    var p uintptr = 1    s = (*string)(unsafe.Pointer(p))    fmt.Println(s)}输出:0x1unsafe阅读和的文档unsafe.Pointer以确保正确使用。指针表示指向任意类型的指针。有四种特殊操作可用于 Pointer 类型,而其他类型则不可用:任何类型的指针值都可以转换为指针。指针可以转换为任何类型的指针值。uintptr 可以转换为指针。指针可以转换为 uintptr。因此,指针允许程序击败类型系统并读写任意内存。使用时应格外小心。以下涉及指针的模式是有效的。不使用这些模式的代码很可能在今天无效或在将来变得无效。即使是下面的有效模式也有重要的警告。[ ... ]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go