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

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

Linda Hamilton
发布: 2024-11-19 11:32:02
原创
477 人浏览过

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>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><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中文网其他相关文章!

    来源:php.cn
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    作者最新文章
    热门推荐
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板