我创建了具有以下结构的地图:
m := make(map[int]Record)
记录是如下结构:
type Record struct {
UID int
Type string
Year string
}
SumRecord结构应该存储有关映射m中每个给定类型/年份值的出现次数的信息。
type SumRecord struct {
Sum int
Type string
Year string
}
该结构应该保存有关图书出版年份的信息,即{1, "Type": "fiction", "Year": 1996}, {2, "Type": "non-fiction", "Year": 1996}
我未尝试创建第二张地图,每年我将在其中存储每种出版物类型的总和(类似于SQL中的SUM / GROUP BY)。如何使用Go来实现?
答案 0 :(得分:1)
这是@ThunderCat提供的解决方案的替代解决方案。
这将创建一个新的SumRecord到整数的映射,该映射表示该特定类型/年份分组的出现总数。
查看完整示例here。
type Record struct {
UID int
Type string
Year string
}
type SumRecord struct {
Type string
Year string
}
m := make(map[int]Record)
// e.g. [{"1996","non-fiction"}:4], representing 4 occurrences of {"1996","non-fiction"}
srMap := make(map[SumRecord]int)
// add records
// loop over records
for key := range m {
sr := SumRecord{
Type: m[key].Type,
Year: m[key].Year,
}
// creates new counter or increments existing pair counter by 1
srMap[sr] += 1
}
// print all mappings
fmt.Println(srMap)
// specific example
fmt.Println(srMap[SumRecord{
Year: "1996",
Type: "non-fiction",
}])