Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- )
- // Тип элемента массива исходных данных
- type Element struct {
- Date string
- Amount int
- }
- func main() {
- // Массив исходных данных
- input := []Element{
- {"2016.11.21", 20},
- {"2016.11.22", 23},
- {"2016.11.25", 3},
- {"2016.11.21", 98},
- {"2016.11.22", 4},
- {"2016.11.21", 9},
- {"2016.11.25", 30},
- }
- // В этой мапе будем считать суммы и избавляться от дубликатов
- // Используем дату как ключ, а сумму как значение
- aggregationMap := make(map[string]int)
- for _, elem := range input {
- // Достаем из мапы имеющееся значение для данной даты
- // и флаг "ok", который будет false, если
- previousValue, ok := aggregationMap[elem.Date]
- if ok {
- // Если такая дата уже есть в мапе, добавляем к значению очередное число
- aggregationMap[elem.Date] = previousValue + elem.Amount
- } else {
- // Если такой даты еще нет в мапе, то создаем ее там и помещаем наше число
- aggregationMap[elem.Date] = elem.Amount
- }
- }
- // Выводим на экран все, что содержится в нашей мапе
- for date, sum := range aggregationMap {
- fmt.Println(date, sum)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement