当我们说 uintptr 存储指针值的未解释位时,这意味着什么?

What does that mean when we say uintptr stores the uninterpreted bits of a pointer value?

我在 golang 网站上读到 uintptr 存储了指针值的未解释位,我在网上找到的那种答案非常confusing.Can有人请用简单的话向我解释一下。

简答:当您需要像使用数字一样使用地址时使用它。

Go 是一种垃圾收集语言。 Go 总是准确地知道,什么时候一个东西是一个指针,什么时候它只是一个值。 Go 需要这些知识来寻找它可以释放的旧的未使用值。指针在 Go 中也很特殊,因为你不能像在 C 中那样只向指针添加一个数字。

但有时,当您使用嵌入式系统或某种需要从地址中添加或减去的低级库时,您需要告诉 Go 它不应该检查这个指针,因为它没有指向目前有用的任何东西。您只想使用此地址,就好像它是一个数字和 add/subtract 另一个数字。

这是您要使用的地方 uintptr。这个类型可以保存任何指针值(任何地址),当你把一个地址放入其中时,Go 不会把它看作一个指针,所以你可以用它做任何你想做的事。