arrays - 如何检查结构中是否存在值并将另一个值保存在数组中

标签 arrays loops go hashmap

我不太确定如何在 Go 中执行此操作,我才刚刚开始使用它,所以我不熟悉应该如何完成。

想法是这样的:我在一个函数中创建了一个 struct:

XSiteGroup := struct {
        siteURL string
        siteIDs []string
    }{}

我已经实现了一个获取对象数组的请求;此对象具有以下结构:

{
   "siteId": "",
   "merchantName": "",
   "friendlyTitle": "",
   "url": ""
 }

我想做的是遍历该数组并将我找到的每个 url 存储为“键”而不重复,然后存储 siteId 的值XSiteGroup 结构的 siteIDs 数组中的每个对象。那么让我们假设以下场景:

{
   "siteId": "5050",
   "merchantName": "",
   "friendlyTitle": "",
   "url": "url1.com"
},
{
   "siteId": "4050",
   "merchantName": "",
   "friendlyTitle": "",
   "url": "url2.com"
},
{
   "siteId": "8060",
   "merchantName": "",
   "friendlyTitle": "",
   "url": "url1.com"
}

根据上面的结果,我需要存储如下内容:

{
  siteURL: "url1.com",
  siteIDs: ["5050", "8060"]
}

我现在有这样的东西来循环我拥有的网站数组:

for _, site := range xwebsites {
        u, _ := url.Parse(site.URL)
        urlString := strings.ReplaceAll(u.Host, "www.", "")

        // So I'm thinking here I should handle the struct I created to store values 
        }

如果我不清楚或需要什么额外信息,请告诉我。

最佳答案

如果该值不存在,则必须创建它。您可以使用 value, ok := map[key] 检查。

type xsitegroup struct {
    url     string
    ids     []string
}

# A mapping between urls and their site groups.
sitegroups := make(map[string]*xsitegroup)

for _, website := range xwebsites {
    url := website["url"]

    sitegroup, ok := sitegroups[url]

    # A sitegroup for this URL doesn't exist
    if !ok {
        # Create the sitegroup
        sitegroup = &xsitegroup{ url: url, ids: []string{} }
        # Add it to the mapping
        sitegroups[url] = sitegroup
    }

    # Append the site id.   
    sitegroup.ids = append(sitegroup.ids, website["siteId"])
}

关于arrays - 如何检查结构中是否存在值并将另一个值保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069141/

相关文章:

git - 在推送到版本控制远程服务器之前检查以确保项目已编译

c - 将指针类型分配给字符串类型

javascript - 在 React 中如何根据对象值勾选输入复选框

java - 添加和删​​除有序 Arraylist

javascript - 基于条件jquery删除p标签

java - 输入验证和再次播放循环JAVA作业时出现问题

go - 方法如何获取接口(interface)类型的输出参数?

arrays - 自新的 xcode 更新以来数组没有改变 - swift

python - 在 python reportlab 中循环遍历一个表

amazon-web-services - 如何使用 GoLang 拒绝注册触发器