Pointers 显式定义变量地址(在Go中)

Pointers 显式定义变量地址(在Go中),pointers,go,memory-address,Pointers,Go,Memory Address,简化问题: 程序员跟踪变量的地址,以便变量的地址可以用作变量上的数据点,这是否可行 原始问题: 我试图用Go中的指针来理解变量是如何被地址存储和引用的 作为一般原则,直接分配变量的地址有用吗?我可以想象这样一种情况,数据可以被编码在一个变量的物理虚拟地址中,而不一定是该变量的值 例如,第1000位客户购买了500美元。我可以在1000号位置存储一个值为500的整数吗 我知道这样做的常用方法是使用数组,其中999位置的变量对应于第1000个客户,但我的问题不是数组,而是直接分配地址 假设我正在处理

简化问题:

程序员跟踪变量的地址,以便变量的地址可以用作变量上的数据点,这是否可行

原始问题:

我试图用Go中的指针来理解变量是如何被地址存储和引用的

作为一般原则,直接分配变量的地址有用吗?我可以想象这样一种情况,数据可以被编码在一个变量的物理虚拟地址中,而不一定是该变量的值

例如,第1000位客户购买了500美元。我可以在1000号位置存储一个值为500的整数吗

我知道这样做的常用方法是使用数组,其中999位置的变量对应于第1000个客户,但我的问题不是数组,而是直接分配地址

假设我正在处理数十亿个对象。有没有一种简单的方法可以将地址作为对象数据的一部分,并将存储在该位置的值作为不同的数据使用

例如,地址135851851904处的int值为46876,135851851905处的int值为123498761,等等。我想在这一点上,数组或片会太大而不能有效

顺便说一句,如果我的问题是因为误解,是否有人可以提供一种资源,对这个主题进行深入但可以理解的详细解释?我一直无法找到一个关于这个主题的好资源来真正解释细节

直接分配变量的地址有用吗

您可以使用不安全的包来实现这一点,但是您的想法是,除非您有一个具体的、无法解决的用例需要它,否则您不会这样做

我可以在1000号位置存储一个值为500的整数吗

如前所述,这是可能的,但选择任意地址不会让你走得很远,因为它甚至可能没有被映射。如果您写入到这样的位置,您将获得访问冲突,并且您的程序将崩溃。如果您碰巧找到了一个有效的地址号码,您可能会覆盖程序运行所需的其他数据

有没有一种简单的方法可以将地址作为对象数据的一部分,并将存储在该位置的值作为不同的数据使用

一般来说,没有

如果您成功地构建了某种代数结构,通过这些结构,您自己的指针算法被定义在一组有限的地址中,您可以保证这些地址始终是一个有效的虚拟内存段,那么是的,但它破坏了使用垃圾收集语言的目的。此外,读这样一个节目简直是地狱

直接分配变量的地址有用吗

您可以使用不安全的包来实现这一点,但是您的想法是,除非您有一个具体的、无法解决的用例需要它,否则您不会这样做

我可以在1000号位置存储一个值为500的整数吗

如前所述,这是可能的,但选择任意地址不会让你走得很远,因为它甚至可能没有被映射。如果您写入到这样的位置,您将获得访问冲突,并且您的程序将崩溃。如果您碰巧找到了一个有效的地址号码,您可能会覆盖程序运行所需的其他数据

有没有一种简单的方法可以将地址作为对象数据的一部分,并将存储在该位置的值作为不同的数据使用

一般来说,没有


如果您成功地构建了某种代数结构,通过这些结构,您自己的指针算法被定义在一组有限的地址中,您可以保证这些地址始终是一个有效的虚拟内存段,那么是的,但它破坏了使用垃圾收集语言的目的。此外,读这样一个节目也会很痛苦。

这个问题太宽泛了。好的答案对于这种格式来说太长了。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题。@peterSO您能推荐一个我可以更详细地探讨此主题的来源吗?:询问我们推荐或查找书籍、工具、软件库的问题,教程或其他非站点资源对于堆栈溢出来说是非主题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。@peterSO说得很公平。我想我现在知道SO代表什么了,哈哈。这个问题太宽泛了。好的答案对于这种格式来说太长了。请添加详细信息以缩小答案集或隔离可以在几个段落中回答的问题。@peterSO您能推荐一个我可以更详细地探讨此主题的来源吗?:要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关
因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。@peterSO说得很公平。我想我现在知道SO代表什么了,哈哈。听起来确实很可怕。我特别喜欢你对我问题的解释,我很高兴你理解了我的问题。另外,Go现在有一个运行时可以移动东西,所以不能保证它不会被随机覆盖。这听起来很可怕。我特别喜欢你对我问题的解释,我很高兴你理解了我的问题。另外,Go现在有一个运行时可以移动东西,所以不能保证它不会被随机覆盖。