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

时间:2015-02-11 12:13:00

标签: pointers go

我在golang网站上读到,uintptr存储指针值的未解释位,我在网上发现的那种东西非常令人困惑。有人请用简单的语言向我解释这个。

1 个答案:

答案 0 :(得分:5)

简短回答:当您需要使用地址时使用它,就好像它是一个数字一样。

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

但有时,当您使用嵌入式系统或某种需要在地址中添加或减去的低级库时,您需要告诉Go它不应该检查此指针,因为它&#39 ;此刻并没有指出任何有用的东西。您只想将此地址用作数字,并为其添加/减去另一个数字。

这是您使用uintptr的地方。这种类型可以保存任何指针值(任何地址),当你将地址放入其中时,Go不会将其视为指针,因此您可以随意使用它。