加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

指针 – golang范围引用代替值

发布时间:2020-12-16 19:22:26 所属栏目:大数据 来源:网络整理
导读:我看到该范围返回的键和值的“复制”.有没有办法让这个范围返回物品的地址?例 package mainimport "fmt"type MyType struct { field string}func main() { var array [10]MyType for _,e := range array { e.field = "foo" } for _,e := range array { fmt.
我看到该范围返回的键和值的“复制”.有没有办法让这个范围返回物品的地址?例
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("--")
    }
}

http://play.golang.org/p/AFOGG9NGpx

这里的“field”不会被修改,因为range发送字段的副本,
我必须使用索引,还是有其他方式修改值?

谢谢阅读.

短小直接回答:不,使用数组索引而不是值

所以上面的代码变成:

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("--")
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读