Как посчитать количество вхождений значения в карту с Голангом? - PullRequest
0 голосов
/ 05 марта 2019

Я создал карту со следующей структурой:

m := make(map[int]Record)

Запись представляет собой следующую структуру:

type Record struct {
    UID  int
    Type string
    Year string
}

В структуре SumRecord предполагается хранить информацию о числевхождений каждого значения типа / года на карте м.

type SumRecord struct {
    Sum  int
    Type string
    Year string
}

Структура должна содержать информацию о годах публикации книги, т. е. {1, "Type": "fiction", "Year": 1996}, {2, "Type": "non-fiction", "Year": 1996}

Я безуспешно пытаюсь создатьвторая карта, где я буду хранить сумму каждого типа публикации в год (аналогично SUM / GROUP BY в SQL).Как я могу добиться этого с Go?

1 Ответ

0 голосов
/ 05 марта 2019

Вот альтернативное решение, предоставленное @ ThunderCat.

Это создает новое сопоставление 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 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",
}])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...