如何从嵌套数组的 golang grpc 服务中根据条件获取数据

huangapple go评论101阅读模式
英文:

How to get data based on condition from nested array golang grpc service

问题

我正在尝试根据下一个数组条件获取特定数据的Go代码。我想,我只需要给一个例子来说明清楚。

假设我有一个如下的数组:

detail: {
contacts: [
{
email: "testing@gmail.com",
condition: {
valid: "Yes",
verified: "No"
}
},
{
email: "testing2@gmail.com",
condition: {
valid: "Yes",
verified: "Yes"
}
}
]
}

所以,我想在调用grpc函数后,如果条件中的verified为"Yes",则将email作为返回值。

result, err := grpcService.callingService.GetContactDetail(ctx, &contactServicePb.GetContactDetailRequest{
ContactId: "123",
})
if err != nil {
return err
}

这是我目前尝试的,我可以访问contacts列表,但我不知道如何获取属于"Yes" verified的email。

fmt.Println(result.Detail.Contacts)

输出如下所示:

{
email: "testing@gmail.com",
condition: {
valid: "Yes",
verified: "No"
}
},
{
email: "testing2@gmail.com",
condition: {
valid: "Yes",
verified: "Yes"
}
}

英文:

I'm trying to get specific data based on next array condition in Go. I think, I will just give an example to make it clear.

Let's say I have an array like this

  1. detail: {
  2. contacts: [
  3. {
  4. email: "testing@gmail.com"
  5. condition: {
  6. valid: "Yes",
  7. verified: "No"
  8. }
  9. },
  10. {
  11. email: "testing2@gmail.com"
  12. condition: {
  13. valid: "Yes",
  14. verified: "Yes"
  15. }
  16. }
  17. ]
  18. }

So, I'm trying to get the email as a return after calling grpc function if the condition has verified "Yes" on it.

  1. result, err := grpcService.callingService.GetContactDetail(ctx, &contactServicePb.GetContactDetailRequest{
  2. ContactId: "123",
  3. })
  4. if err != nil {
  5. return err
  6. }

This is what I tried so far, I can access the contacts list but I don't know how do I take email which belong to "Yes" verified.

fmt.Println(result.Detail.Contacts)

this is how the output looks like

  1. {
  2. email: "testing@gmail.com"
  3. condition: {
  4. valid: "Yes",
  5. verified: "No"
  6. }
  7. },
  8. {
  9. email: "testing2@gmail.com"
  10. condition: {
  11. valid: "Yes",
  12. verified: "Yes"
  13. }
  14. }

答案1

得分: 1

你可以遍历result.Detail.Contacts数组,并在“Yes”验证条件下存储联系人的电子邮件:

  1. verifiedEmails := []string{}
  2. for _, contact := range result.Detail.Contacts {
  3. if contact.condition.verified == "Yes" {
  4. verifiedEmails = append(verifiedEmails, contact.email)
  5. }
  6. }
  7. fmt.Println(verifiedEmails)
英文:

You can iterate over result.Detail.Contacts array and store contacts' email with "Yes" verified condition:

  1. verifiedEmails := []string{}
  2. for _, contact := range result.Detail.Contacts {
  3. if contact.condition.verified == "Yes" {
  4. validEmails = append(validEmails, contact.email)
  5. }
  6. }
  7. fmt.Println(validEmails)

huangapple
  • 本文由 发表于 2022年3月10日 02:17:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/71414188.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定