当前位置: 首页 > 面试题库 >

范围引用代替值

杨飞
2023-03-14
问题内容

我看到该范围返回键和值的“副本”。有没有办法让该范围返回该商品的地址?例

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发送了field的副本,我是否必须使用index或是否有其他方法可以修改值?

谢谢阅读。


问题答案:

简短而直接的答案: 不,使用数组索引而不是值

因此,上面的代码变为:

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


 类似资料:
  • 有一个非常常见且简单的任务是在两个方向上通过某个范围进行循环迭代: 上面的代码运行完美,但我花了大约一个小时试图摆脱双重检查。 有没有办法解决如果没有如果?也许是一句话?

  • Gateway/Worker 的进程模型 特点: 从图上我们可以看出Gateway负责接收客户端的连接以及连接上的数据,然后Worker接收Gateway发来的数据做处理,然后再经由Gateway把结果转发给其它客户端。每个客户端都有很多的路由到达另外一个客户端,例如client⑦与client①可以经由蓝色路径完成数据通讯 优点: 1、可以方便的实现客户端之间的通讯 2、Gateway与Work

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 使用DynamoDB,没有简单的方法可以对列执行索引范围查询。主键、本地二级索引和全局二级索引都需要分区键来进行范围查询。 例如,假设我有一个带有数字分数属性的高分表。使用索引范围查询无法获得前10名或前25至50名 那么,执行这项极其常见的任务的惯用方式或首选方式是什么呢? > 接受表格扫描。 使用静态分区键并利用分区查询。 使用固定数量的静态分区键并使用多个分区查询。

  • 因此,例如,让我们假设我们有以下本体 类:Person 类:Vehicle 类:Engine 属性:hasEngine:Domain Vehicle:Range Engine John isa Person John hasEngine engine-1 那么,如果域和范围是坏的,那么我应该用什么来代替对事物类之间的关系建模呢? 编辑:我最初说过在新版本中没有域/范围字段。几乎在发布这篇文章后,我

  • 我想做的是从一个列表中引用几个不同的范围,即。我想要4-6元素,12-18元素,等等。这是我最初的尝试: 我希望它能做同样的事情: 但是我有一个语法错误。最好/最简单的方法是什么?