在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中?
答案 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)
}