Goでmapにmapにmapを入れた集計
Goでmapにmapにmapを入れた集計をしてみます。
type SukinaKudamono struct {
Count int
Prices map[int]int
}
kudamonoSyukei:= make(map[string]map[string]map[string]SukinaKudamono)
みたいな感じのやつです。
1つめのmapは果物、2つめは産地、3つめはブランドとします。
するとこんな感じの集計に加工できます。
// みんなが好きな果物
// 1. メロン 北海道 夕張メロン 12件
// - 2000円 4件
// - 1500円 8件
// 2. メロン 北海道 プリンスメロン 11件
// - 1000円 11件
// 3. メロン 静岡 クラウンメロン 10件
// - 5000円 2件
// - 3000円 5件
// - 2000円 3件
ハマりどころは、
var (
kudamono = "メロン"
sanchi = "北海道"
brand = "夕張メロン"
)
if _, ok := kudamonoSyukei[kudamono]; !ok {
kudamonoSyukei[kudamono] = map[string]map[string]SukinaKudamono{}
}
if _, ok := kudamonoSyukei[kudamono][sanchi]; !ok {
kudamonoSyukei[kudamono][sanchi] = map[string]SukinaKudamono{}
}
if _, ok := kudamonoSyukei[kudamono][sanchi][brand]; !ok {
kudamonoSyukei[kudamono][sanchi][brand] = SukinaKudamono{}
}
tmp := kudamonoSyukei[kudamono][sanchi][brand]
if tmp.Prices == nil {
tmp.Prices = make(map[int]int)
}
いちいち初期化しないとダメなところですかね。
おしまい。
この記事が気に入ったらサポートをしてみませんか?