当前位置: 首页 > 网络应用技术

GO结构方法的方法和值之间的差异和值的实验

时间:2023-03-06 14:55:31 网络应用技术

  众所周知,当GO struct定义方法是修改方法中的属性值时,使用指针或值之间的差异,方法定义方法的修改仅限于该方法,并且指针也不有限。

  如果文章在这里,那么这是非常平庸的,所以我计划带所有人进行无聊但思考的实验。

  在开始之前,编写一个简单的代码来运行前面提到的内容,并让每个人熟悉下一个实验代码的编码规则。在本文中,GO已更新了许多版本,这些版本可能不适用。, 代码:

  操作结果:

  如果我们期望在方法定义中修改属性不会给外部带来影响。

  接下来,开始我们的实验

  在我们的日常发展中,我们经常在该方法中遇到另一种方法。如果在调用方法中修改属性会发生什么?

  将有四个洋娃娃案例:,,(,,(实际情况可能仍然有更多的洋娃娃,但是在这里我们只需要理解一层,其余的可以根据数学归纳方法来理解。),转到中国和加拿大的代码曲法的代码:

  然后加入:

  结果:

  列出一个表格:

  6) / 7SETP(6+1) / 7得出结论:只有整个调用链接是由指针定义的方法,并且将保留属性的修改,否则它仅在该方法中有效,该方法是有效的最初的说法是最初的说法。

  您可能会认为文章即将结束,但并非如此,让我们重点关注:

  修改与:

  执行它之后,它修改的值不仅在内部!内部方法会复制副本吗?

  打印出指针以确认!

  看一下操作的结果(我标记了需要关注的三行):

  可以找到:

  2.1。如果是指针方法,则属性地址将从呼叫者2.2继承。如果是值方法,则属性地址是新打开的空间地址

  至于洋娃娃打电话过多会导致记忆飙升,这里不会进行讨论。如果您有兴趣,可以自己检查信息或查看GO本身的基本实现。

  在本文终于结束之前,总结了这个无聊的实验,它可以提醒我们的实际发展:

  作者:是的!一个