Что выведет код Junior Слайсы и мапы изнутри обновлено

Что выведет Go: len и cap подслайса

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23. Каждую строку вывода пишите с новой строки.

package main

import "fmt"

func main() {
    s := []int{0, 1, 2, 3, 4, 5}
    t := s[2:4]
    fmt.Println(len(t), cap(t), t)
    u := t[:4]
    fmt.Println(u)
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 2 4 [2 3], [2 3 4 5]. s[2:4] берёт элементы с индексами 2 и 3: len 2, а ёмкость считается от начала среза до конца массива: 6 - 2 = 4.

Что выведет

2 4 [2 3]
[2 3 4 5]

Разбор

s[2:4] берёт элементы с индексами 2 и 3: len 2, а ёмкость считается от начала среза до конца массива: 6 - 2 = 4. Срез можно расширить в пределах ёмкости, поэтому t[:4] законен и показывает элементы 2..5 исходного массива.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.