Что выведет: s := make([]int, 0, 5); s = append(s, 1,2,3); s2 := s[1:2]; fmt.Println(cap(s2))?

Middle
103 просмотров
AFK Offer AI

Выведет 4. cap(s2) = cap(s) - low = 5 - 1 = 4. Slice s2 начинается с индекса 1 underlying array и имеет доступ до конца capacity. Это значит append(s2, ...) может перезаписать s[2], s[3], s[4]. Для ограничения: s2 := s[1:2:2] — full slice expression, cap будет 1. Это защищает от случайной перезаписи.

Следующий вопрос

Как реализовать search service на Go?