如何知道Golang中是否填充了空的struct var?

时间:2019-01-03 20:24:12

标签: go

在Python中,我可以执行以下操作:

aModel = None
models = somefunction()
for model in models:
    if model.cool is False and model.somenumber > -5:
        aModel = model
        break

if aModel:
    print("We found a model we like!!")

我正试图在Golang中做同样的事情。初始化之后,某些结构的变量已经是一个结构,并且已经具有HAS值(例如false表示bool var,0表示int var)。

因此请考虑以下代码:

type SomeModel struct {
    cool bool
    somenumber int
}

func main() {

    somemodels = somefunction()

    var aModel SomeModel
    for _, v := range somemodels {
        fmt.Println(v)
        if (v.cool == false && v.somenumber > -5) {
            aModel = v
        }
    }
    fmt.Println(aModel)
}

如果打印出{false 0},我怎么知道这是我在切片中找到的模型,还是我在循环之前设置的默认模型?

我当然可以设置另一个变量,例如foundamodel := false,如果我发现了一些东西,则将其设置为true,但这似乎并不是显而易见的方法。

还是在Go中?

1 个答案:

答案 0 :(得分:0)

您可以使用指针代替具体值:

var aModel *SomeModel
for _, v := range somemodels {
    fmt.Println(v)
    if v.cool == false && v.somenumber > -5 {
        aModel = &v
        break
    }
}
if aModel != nil {
    fmt.Println(*aModel)
}