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

时间:2013-10-11 16:17:45

标签: 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
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果您的数据是按一个键排序的,那么您可以使用http://golang.org/pkg/sort/#Search进行二进制搜索,如果数据量适中,则可以提高性能。