database - 在结构数组中搜索
问题描述
我有一个这样定义的结构:
type Issues struct {
RedmineIssue string
GitlabIssue string
}
然后我从数据库中获取列表
database.Find(&Issues)
然后我有另一个数组
redmineIssues []redmine.Issue
有没有办法在我的数组问题中搜索问题,这些问题也在数组 redmineIssues 基于字段 RedmineIssue(string) 中?
今天这就是我正在做的事情
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))
推荐阅读
- google-apps-script - 返回链接以重定向 url
- amazon-web-services - AWS Autoscaling Group EC2 实例在 cron 作业期间关闭
- python - 正在生成多个数据框和其他问题
- python - 按索引排序熊猫数据框,然后按字母顺序
- node.js - 在项目中隐藏 .env 文件
- java - 如何在tomcat 6中通过servlet名称获取servlet映射?
- mongodb - 在动态路由的情况下,getstaticprops 不能使用 getstaticpaths 中的参数?MongoDB
- javascript - 使用 JavaScript 将表单内的每个输入值乘以 7
- python - 使用 Pytorch 从自动编码器中提取隐藏特征
- angular - 带有 Keycloak 的 Angular 和 Spring Boot REST API 的 CORS 问题