猿问

如何使用 Golang 计算地图中某个值的出现次数?

我创建了一个具有以下结构的地图:

m := make(map[int]Record)

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 实现它?


桃花长相依
浏览 103回答 1
1回答

繁星淼淼

这将创建 SumRecord 到整数的新映射,表示该特定类型/年份分组的出现次数总和。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 recordsfor 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 mappingsfmt.Println(srMap)// specific examplefmt.Println(srMap[SumRecord{    Year: "1996",    Type: "non-fiction",}])
随时随地看视频慕课网APP

相关分类

Go
我要回答