Что выведет программа при выполнении?

Программа создаёт срез s с длиной 0 и ёмкостью 3, затем добавляет в него 5 элементов (0,1,2,3,4). При добавлении элементов срез автоматически расширяется, если превышается ёмкость.

Короткий ответ

Что ответить на собеседовании

Программа создаёт срез s с длиной 0 и ёмкостью 3, затем добавляет в него 5 элементов (0,1,2,3,4). При добавлении элементов срез автоматически расширяется, если превышается ёмкость.

Подробный разбор

Ответ с пояснениями

Условие

Что выведет программа при выполнении?

package main

import "fmt"

func main() { s := make([]int, 0, 3) m := map[string]int{"a": 1, "b": 2}

for i := 0; i < 5; i++ {
    s = append(s, i)
}

fmt.Println(len(s), cap(s))

if v, ok := m["c"]; ok {
    fmt.Println(v)
} else {
    fmt.Println("нет ключа")
}

}

Ответ

Программа создаёт срез s с длиной 0 и ёмкостью 3, затем добавляет в него 5 элементов (0,1,2,3,4). При добавлении элементов срез автоматически расширяется, если превышается ёмкость.

После цикла:

  • len(s) будет 5 (число элементов)
  • cap(s) будет 6, так как при превышении ёмкости среза она обычно удваивается (с 3 до 6)

Далее программа пытается получить значение по ключу "c" из мапы m. Такого ключа нет, поэтому ok будет false и выведется "нет ключа".

Итоговый вывод:

5 6
нет ключа

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку