假设我有两个结构。 StructA和StructB,其中包含StructA的数组。我如何遍历StructB并检查其中的StructA中变量的值?

type StructA struct {
    varA string
    varB string
    varC string
}


type StructB struct {
    foo  []StructA
}

最佳答案

在Go中,Struct不可迭代。另外,您还希望不通过多个foo字段来遍历StructB属性。因此,您应该遍历作为结构属性的 slice 。然后,只需检查方程式即可找到所需的值或确定该值不存在。

Playground:

target := "C"
a := StructB{[]StructA{StructA{"A", "B", "C"}}}
for _, i := range a.foo {
    if target == i.varA {
        fmt.Println(i.varA)
    } else if target == i.varB {
        fmt.Println(i.varB)
    } else if target == i.varC {
        fmt.Println(i.varC)
    } else {
        fmt.Println("None of above")
    }
}

围棋是非常明确的,而且技巧很少能带来真正的 yield 。

关于go - 检查值是否在结构体的结构体数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43659692/

10-10 21:49