gpt4 book ai didi

go - 包含嵌入的结构 slice 的结构

转载 作者:IT王子 更新时间:2023-10-29 02:10:01 24 4
gpt4 key购买 nike

我有这个代码

package main

import (
"fmt"
)

type foo struct {
a int
b bool
}

type foos []foo

type bar struct {
foos
}

func newBar() *bar {
b := &bar{
foos: make([]foo, 3, 3),
}
for _, foo := range b.foos {
// didn't set b to true
foo.b = true
}
return b
}

func main() {
b := newBar()
fmt.Println(b)
// set b to true
b.foos[0].b = true
fmt.Println(b)
}

The Go Playground

如您所见,我想使用构造函数 newBar() 初始化 bar 但我希望嵌入类型 foo.b 使用非零值进行初始化,因此我使用for range 语句但它没有按预期工作,foo.b 仍然是错误的,所有这些。作为在主函数中使用此代码 b.foos[0].b = true 的比较,它起作用了。那么我的代码有什么问题吗?

最佳答案

Omg,我在发布这个问题后才意识到这一点,这是因为变量 slotfor loop 的本地变量。所以解决方案是:

for i, _ := range b.foos {
// now b is set to true
b.foos[i].b = true
}

关于go - 包含嵌入的结构 slice 的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49610015/

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