dongshao1981 2019-03-13 09:09
浏览 14

搜索结构数组

I have a struct defined like this :

type Issues struct {
    RedmineIssue string
    GitlabIssue string
}

Then I get the list from the DB

    database.Find(&Issues)

Then I have another array

   redmineIssues []redmine.Issue

Is there any way to search issues in my array Issues that are also in the array redmineIssues base on field RedmineIssue ( string ) ?


Today here is what I'm doing

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

Then I can compare with another array I have

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

Any idea on how to optimize this and to make it cleaner?

  • 写回答

1条回答 默认 最新

  • dongziche8030 2019-03-13 10:13
    关注

    A for loop is the right way to go. Assuming the code you pasted actually works, you can merge those into a single for loop, the way you have it written.

    database.Find(&Issues)
    redmineIssue := []string{}
    gitlabissues := []string{}
    for _, issue := range Issues {
        redmineIssue = append(redmineIssue, issue.RedmineIssue)
        gitlabissues = append(gitlabissues, issue.GitlabIssue)
    }
    

    But this assumes that Issues is an array. Which doesn't match the rest of your question. According to your stated definition of Issues, the code you posted won't even compile, though. So I don't know if this code will work for you, either.

    You can provide another micro-optimization by pre-allocating the arrays:

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

报告相同问题?

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)