我不确定在Go中如何执行此操作,我只是开始使用它,因此我不知道应该如何执行。
想法是这样的:我在函数内创建了一个struct
:
XSiteGroup := struct {
siteURL string
siteIDs []string
}{}
我实现了一个获取对象数组的请求;该对象具有以下结构:
{
"siteId": "",
"merchantName": "",
"friendlyTitle": "",
"url": ""
}
我想做的是遍历该数组并将每个我发现的url
存储为一个没有重复的“键”,然后将每个对象的siteId
值存储在{{ 1}}结构siteIDs
的数组。因此,我们假设以下情形:
XSiteGroup
具有上面的结果,我需要存储类似的内容:
{
"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"]
}
如果我不清楚或需要什么其他信息,请告诉我。
答案 0 :(得分:1)
如果该值不存在,则必须创建它。您可以使用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"])
}