gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:13 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com