登录
首页 >  Golang >  Go问答

如何判断 Golang 中的空结构体变量是否被初始化?

来源:stackoverflow

时间:2024-03-12 18:36:24 257浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《如何判断 Golang 中的空结构体变量是否被初始化?》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

在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 中做同样的事情。初始化后,某些结构的变量已经是结构并且已经具有值(例如 bool var 的 falseint var 的 0 )。

因此考虑以下代码:

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 语言?


解决方案


您可以使用指针而不是具体值:

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)
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>