为了账号安全,请及时绑定邮箱和手机立即绑定

更新对象的一部分

更新对象的一部分

Go
猛跑小猪 2022-07-11 17:02:58
我希望有一张格式如下的地图:mapName[someIntegerID].Title.EN_USmapName[someIntegerID].Title.ZH_HKmapName[someIntegerID].Title.ZH_CNmapName[someIntegerID].Content.EN_USmapName[someIntegerID].Content.ZH_HKmapName[someIntegerID].Content.ZH_CN其实上面说的有道理吗?无论如何,我尝试了下面的代码。api json 响应格式是完美的,但是,我注意到在 forloop 期间,zh_HK 将覆盖 en_US 的,以及 zh_CN 将覆盖 zh_HK 和 en_US,导致正确的 zh_CN 值但空 en_US 和 zh_HK 值。专家可以给我一些建议,我该如何实现它?type Hello struct {    Title   Locale `json:"title"`    Content Locale `json:"content"`}type Locale struct {    EN_US string `json:"en-US"`    ZH_HK string `json:"zh-HK"`    ZH_CN string `json:"zh-CN"`}someMap := map[int]Hello{}for _, recordTranslations := range recordsTranslations {    if _, has := someMap[recordTranslations.SchoolGroupID]; !has {        someMap[recordTranslations.SchoolGroupID] = Hello{}    }    if recordTranslations.Locale == "en-US" {        someMap[recordTranslations.SchoolGroupID] = Hello{            Title: Locale{                EN_US: recordTranslations.Title,            },            Content: Locale{                EN_US: recordTranslations.Content,            },        }    } else if recordTranslations.Locale == "zh-HK" {        someMap[recordTranslations.SchoolGroupID] = Hello{            Title: Locale{                ZH_HK: recordTranslations.Title,            },            Content: Locale{                ZH_HK: recordTranslations.Content,            },        }    } else if recordTranslations.Locale == "zh-CN" {        someMap[recordTranslations.SchoolGroupID] = Hello{            Title: Locale{                ZH_CN: recordTranslations.Title,            },            Content: Locale{                ZH_CN: recordTranslations.Content,            },        }    }}
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

hello 对象被覆盖,因为您每次都在创建一个新的 hello 对象,如果您不想覆盖只是更新对象。


type Hello struct {

Title   Locale `json:"title"`

Content Locale `json:"content"

}

type Locale struct {

EN_US string `json:"en-US"`

ZH_HK string `json:"zh-HK"`

ZH_CN string `json:"zh-CN"`

}

someMap := map[int]Hello{}

for _, recordTranslations := range recordsTranslations {

    if _, has := someMap[recordTranslations.SchoolGroupID]; !has {

        someMap[recordTranslations.SchoolGroupID] = Hello{}

}


if recordTranslations.Locale == "en-US" {

    someMap[recordTranslations.SchoolGroupID].Title.EN_US = recordTranslations.Title

        someMap[recordTranslations.SchoolGroupID].Content.EN_US = recordTranslations.Content

       

} else if recordTranslations.Locale == "zh-HK" {

    someMap[recordTranslations.SchoolGroupID].Title.ZH_HK = recordTranslations.Title

        someMap[recordTranslations.SchoolGroupID].Content.ZH_HK = recordTranslations.Content


} else if recordTranslations.Locale == "zh-CN" {

          someMap[recordTranslations.SchoolGroupID].Title.ZH_CN = recordTranslations.Title

        someMap[recordTranslations.SchoolGroupID].Content.ZH_CN = recordTranslations.Content

}

}


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信