登录
首页 >  Golang >  Go问答

在数组中查找结构体

来源:stackoverflow

时间:2024-03-12 23:33:27 191浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《在数组中查找结构体》,聊聊,我们一起来看看吧!

问题内容

我有一个这样定义的结构:

type issues struct {
    redmineissue string
    gitlabissue string
}

然后我从数据库获取列表

database.find(&issues)

然后我有另一个数组

redmineissues []redmine.issue

有没有办法根据字段 redmineissue ( string ) 搜索我的数组问题中的问题,这些问题也在数组 redmineissues 中?

这就是我今天所做的

database.find(&issues)
    redmineissue := []string{}
    for _, issueredmine := range issues {
        redmineissue = append(redmineissue, issueredmine.redmineissue)
    }

    gitlabissues := []string{}
    for _, issuegitlab := range issues {
        gitlabissues = append(gitlabissues, issuegitlab.gitlabissue)
    }

然后我可以与我拥有的另一个数组进行比较

for _, issueR := range IssueFromRedmineWS {
    inArray, _ := in_array(issueR.Id, redmineIssue)
    if !inArray {
        // The issue is not in the DB
    }
}

关于如何优化它并使其更干净有什么想法吗?


解决方案


for 循环是正确的方法。假设您粘贴的代码实际上有效,您可以按照您编写的方式将它们合并到一个 for 循环中。

database.find(&issues)
redmineissue := []string{}
gitlabissues := []string{}
for _, issue := range issues {
    redmineissue = append(redmineissue, issue.redmineissue)
    gitlabissues = append(gitlabissues, issue.gitlabissue)
}

但这假设 issues 是一个数组。这与你问题的其余部分不匹配。根据您对 issues 的定义,您发布的代码甚至无法编译。所以我也不知道这段代码是否适合您。

您可以通过预分配数组来提供另一种微优化:

database.Find(&Issues)
redmineIssue := make([]string{}, 0, len(Issues))
gitlabissues := make([]string{}, 0, len(Issues))

到这里,我们也就讲完了《在数组中查找结构体》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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