gpt4 book ai didi

go - 通过范围函数中的地址引用

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:48 24 4
gpt4 key购买 nike

我有一个定义如下的 OuterStruct 结构。我正在使用该函数初始化 OuterStruct -> InnerStructname 和 Var1 in setup1()Var1setup2() 中。

在 setup2() 中分配的值总是 nil 因为它是按值引用它的。如何使用在这里引用我的地址?

type InnerStruct struct {
Name string
Var1 *api.Var1
Var2 *ap1.Var2
}

type OuterStruct struct {
opName string
MyData []InnerStruct
LogDir string
}

func (obj *OuterStruct) Setup2() {
for _, innerObj := range obj.InnerStruct { // Here is the prob becuase of using refer by value
innerObj.Var2 = callToPopulateValue()
}
}

func Setup1() {
innerStructList := []InnerStruct

myStruct := InnerStruct{}
myStruct.Name = "name1"
myStruct.Var1 = callToPopulateValue()
innerStructList = append(innerStructList, myStruct)

finalStruct = &OuterStruct {
opName: "structName",
MyData: innerStructList,
LogDir: "/path/for/my/logs",
}

finalStruct.Setup2()
}

最佳答案

你不能通过地址访问,但你可以从 range 中获取索引,并直接分配给 slice :

    for i := range obj.MyData {
obj.MyData[i].Var2 = callToPopulateValue()
}

或者,您可以只使用一片指针值:

type OuterStruct struct {
opName string
MyDAta []*InnerStruct
LogDir string
}

func (obj *OuterStruct) Setup2() {
for _, innerObj := range obj.MyData {
innerObj.Var2 = callToPopulateValue()
}
}

关于go - 通过范围函数中的地址引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719868/

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