我不太确定如何在 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/