通过功能范围

Range through functions

我有 20 多个 return 结构或 nil 的函数。我需要遍历所有这些,如果它们 return 一个结构,我将它附加到一片结构中。所以我想知道是否有一种方法可以遍历所有函数并在结果不为 nil 时追加结果,因为检查每个函数的结果似乎是在浪费时间。谁能建议一种方法来做到这一点?也许是一个例子或其他东西。

所以,我知道你在评论中得到了答案,但我还是想举个例子:

funcs := []func()*struct{Thing int}{
    func()*struct{Thing int}{return nil},
    func()*struct{Thing int}{
        newStruct := struct{Thing int}{Thing: 1}
        return &newStruct
    },
}

sliceOfStructs := []struct{Thing int}{}
for _,f := range funcs {
    res := f()
    if res != nil {
        sliceOfStructs = append(sliceOfStructs, *res)
    }
}