Сумма 1..10 через горутины даёт около 100

Что выведетMiddleпроверка — Спринт08-t014

Нужно найти ошибки и исправить код так, чтобы результат всегда был 55 (сумма чисел от 1 до 10). Сейчас вместо 55 выводится число около 100, а иногда печатается не всё. Что выводит программа сейчас и почему?

main.gogo
1package main2 3import (4	"fmt"5	"sync"6	"time"7)8 9type Acc struct{ Value int }10 11func (a *Acc) Inc(n any) { a.Value += n.(int) }12 13func (a *Acc) Dec(n any) { a.Value -= n.(int) }14 15func (a Acc) Get() int { return a.Value }16 17var mu sync.Mutex18var a = Acc{Value: 0}19 20func main() {21	n := 022	for range [10]int{} {23		n++24		go func() {25			mu.Lock()26			func() {27				defer func() { recover() }()28				defer fmt.Println()29				a.Inc(n)30				fmt.Printf("log n = %v (added = %d)", a.Get(), n)31			}()32			mu.Unlock()33		}()34	}35	time.Sleep(time.Second)36	fmt.Printf("result n = %v", a.Get())37}
Чем закончится программа?
Сначала подумай без запуска — на собесе компилятора не будет.