首页 > 后端开发 > Golang > Go中如何在范围迭代过程中修改原始值?

Go中如何在范围迭代过程中修改原始值?

Mary-Kate Olsen
发布: 2024-12-30 12:34:14
原创
566 人浏览过

How to Modify Original Values During Range Iterations in Go?

在范围迭代中寻址值

迭代一系列值时,通常希望修改原始值而不是仅使用副本。但是,默认情况下,range 构造返回每个值的副本。

package main

import "fmt"

type MyType struct {
    field string
}

func main() {
    var array [10]MyType

    for _, e := range array {
        e.field = "foo"
    }

    for _, e := range array {
        fmt.Println(e.field)
        fmt.Println("--")
    }
}
登录后复制

在上面的代码中,数组中每个元素的“field”字段没有被修改,因为 range 将值复制到e 变量。

解决方案

要修改原始值,不能使用范围构造来迭代这些值。相反,您必须使用数组索引。

package main

import "fmt"

type MyType struct {
    field string
}

func main() {
    var array [10]MyType

    for idx, _ := range array {
        array[idx].field = "foo"
    }

    for _, e := range array {
        fmt.Println(e.field)
        fmt.Println("--")
    }
}
登录后复制

通过使用数组索引,您可以直接访问数组中的原始值,并可以根据需要修改它们。

以上是Go中如何在范围迭代过程中修改原始值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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