Срезы

Срез ([]T) — это структура из трёх полей: указатель на массив, длина (len) и ёмкость (cap). Срез не владеет данными — он смотрит на фрагмент массива.

a := [5]int{1, 2, 3, 4, 5}
s := a[1:4]          // [2 3 4], len=3, cap=4

Изменение элементов через срез изменяет исходный массив.

s := []int{10, 20, 30}           // литерал
s2 := make([]int, 5)             // len=5, cap=5, заполнен нулями
s3 := make([]int, 3, 10)         // len=3, cap=10

append добавляет элементы. Если cap не хватает, создаётся новый массив вдвое большего размера:

s := []int{1, 2}
s = append(s, 3, 4)
fmt.Println(s)   // [1 2 3 4]

other := []int{5, 6}
s = append(s, other...)

После append присваивайте результат обратно — функция может вернуть новый срез.

copy копирует минимум из len(dst) и len(src) элементов:

src := []int{1, 2, 3}
dst := make([]int, 3)
n := copy(dst, src)
fmt.Println(dst, n)   // [1 2 3] 3
s := []int{0, 1, 2, 3, 4}
fmt.Println(s[1:3])   // [1 2]
fmt.Println(s[:2])    // [0 1]
fmt.Println(s[3:])    // [3 4]

ЗаданиеСложность
1Упражнение 1easy
2Упражнение 2easy
3Упражнение 3medium
4Упражнение 4medium