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

Rag*_*tra 3 pointers go

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

Ain*_*r-G 6

简短的回答:当你需要使用一个地址就像它是一个数字一样.

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

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

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