Срез растёт вместе с задачей
Массив имеет фиксированную длину. Срез ссылается на последовательность и может получить новый backing array при добавлении элементов через append.
package main
import "fmt"
func main() {
minutes := []int{20, 30, 25, 15, 40}
total := 0
for _, value := range minutes {
total += value
}
minutes = append(minutes, 30)
fmt.Println("итого:", total, "среднее:", total/5, "дней:", len(minutes))
}
Размер массива известен при объявлении. Срез подходит для меняющейся длины: append возвращает срез с новым элементом, и результат нужно присвоить обратно. Перебор через range даёт индекс и значение.