我在golang网站上读到,uintptr存储指针值的未解释位,我在网上发现的那种东西非常令人困惑。有人请用简单的语言向我解释这个。
答案 0 :(得分:5)
简短回答:当您需要使用地址时使用它,就好像它是一个数字一样。
Go是一种垃圾收集语言。当一个东西是一个指针,当它只是一个值时,Go总是确切地知道。 Go需要这些知识来寻找它可以释放的旧的未使用的值。指针在Go中也很特别,你不能像在C中那样在指针上添加一个数字。
但有时,当您使用嵌入式系统或某种需要在地址中添加或减去的低级库时,您需要告诉Go它不应该检查此指针,因为它&#39 ;此刻并没有指出任何有用的东西。您只想将此地址用作数字,并为其添加/减去另一个数字。
这是您使用uintptr
的地方。这种类型可以保存任何指针值(任何地址),当你将地址放入其中时,Go不会将其视为指针,因此您可以随意使用它。