type Key struct {id1, id2, id3 int // etc}type Record struct {Keymoney int}func main() {records := []Record{{Key{1, 2, 3}, 1000},{Key{1, 2, 3}, 500},{Key{1, 2, 3}, 100},}m := map[Key]int{}for _, r := range records {m[r.Key] += r.money}fmt.Println(m)// map[{1 2 3}:1600]}