在Go数组中查找所有匹配项

Dou*_*ils 6 go

我有一个结构数组(结构详见底部)

我想找到所有符合某些值的结构,例如leg和site.

因此,如果leg = 101且site = 1024A,则返回符合这些条件的所有结构.

这样做的Go方式是什么?

type JanusDepth struct {
    dataset string
    ob      string
    leg     string  
    site    string  
    hole    string
    age     float64
    depth   float64
    long    float64
    lat     float64
}
Run Code Online (Sandbox Code Playgroud)

thw*_*hwd 10

死简单:

leg      := "101"
site     := "1024A"
filtered := []JanusDepth{}

for _, e := range MyArrayOfStructs {
    if(e.leg == leg && e.site == site) {
        filtered = append(filtered, e)
    }
}

// filtered contains your elements
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是惯用的.虽然可以使用反射来执行查找功能,但是在切片上进行迭代非常简单且效率更高.这可能是他们没有在标准库中实现任何Find功能的原因. (2认同)