gpt4 book ai didi

pointers - 范围引用而不是值

转载 作者:IT老高 更新时间:2023-10-28 12:58:06 24 4
gpt4 key购买 nike

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

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

这里的“字段”没有被修改,因为范围发送了字段的副本。我必须使用索引还是有任何其他方式来修改值?

最佳答案

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

所以上面的代码就变成了:

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

关于pointers - 范围引用而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com