首页  >  文章  >  后端开发  >  如何在 Go 中使用指针接收器修改简单类型的值?

如何在 Go 中使用指针接收器修改简单类型的值?

Linda Hamilton
Linda Hamilton原创
2024-11-19 11:32:02430浏览

How to Modify a Simple Type's Value Using a Pointer Receiver in Go?

Go 中通过指针接收器修改简单类型的值

通过指针接收器方法修改简单类型的值可以是Go 中的常见任务。然而,理解指针在这种情况下的行为至关重要。

在提供的示例中:

<br>type FooInt int<p>func (fi *FooInt ) FromString(i 字符串) {</p><pre class="brush:php;toolbar:false">num, _ := strconv.Atoi(i)
tmp := FooInt(num)
fi = &tmp

}

当指针作为接收者传递时,会在方法内创建该指针的副本。方法内对副本所做的任何修改都不会影响原始指针。

在代码片段中,*fi 是传递给 FromString 方法的 fi 指针的副本。当您将 &tmp 分配给 *fi 时,您实际上是在更改副本的值,而不是原始 fi 指针。

要修改原始指针的值,您需要:

  • 返回新的指针值:

    <br> func (fi <em>FooInt) FromString(i string) </em>FooInt {<pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      return &tmp

    }

  • 将非零指针传递给要更改的值:

    <br> func (fi <em>FooInt) FromString(i string, p </em>*FooInt) {</p>
    <pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      *p = &tmp

    }

  • 确保接收者没有nil:

    <br> func (fi *FooInt) FromString(i string) {<pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      *fi = FooInt(num)

    }

通过确保接收者是一个有效的指针并修改里面的指向值方法,可以通过指针接收器有效修改原始简单类型的值。

以上是如何在 Go 中使用指针接收器修改简单类型的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn