Какой вывод получит консоль при запуске программы №54

Сначала нужно исправить constSlice на contSlice. Затем срез останется длины 0, а map будет содержать единственный ключ struct{}{} со значением B.

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

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

Сначала нужно исправить constSlice на contSlice. Затем срез останется длины 0, а map будет содержать единственный ключ struct{}{} со значением B.

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

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

Условие

Определите, какой текст будет выведен в консоль после выполнения приведённого ниже кода на Go:

func exampleB() {
    contSlice :=make([]string, 0 ,2)
    contMap := map[struct{}]string{}

    exampleB1(constSlice)
    exampleB2(contMap)

    fmt.Printf("slice: %#v\n", contSlice)
    fmt.Printf("slice: %#v\n", contMap)
}
func exampleB1(cont[]string){
    cont = append(cont, "A")
    cont = append(cont, "B")
}

func exampleB2(cont map[struct{}]string){
    cont[struct{}{}] = "A"
    cont[struct{}{}] = "B"
        }

Ответ

Сначала нужно исправить constSlice на contSlice. Затем срез останется длины 0, а map будет содержать единственный ключ struct{}{} со значением B.

Оба append помещают A и B в общий массив, но меняют длину лишь локального параметра exampleB1. Поэтому %#v для исходного среза покажет []string{}.

В map все значения пустого struct{} равны и представляют один ключ. Вторая запись заменяет A на B; %#v показывает map с одной такой парой. Подпись slice у второго Printf вводит в заблуждение, но не меняет результат. Функцию exampleB требуется вызвать; само объявление не выполняет печать.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее