На входе есть отсортированные по возрастанию массивы чисел:

Ошибка компиляции связана с отсутствием фигурных скобок {} после условия в операторе if. В Go после условия обязательно должна идти открывающая фигурная скобка, даже если тело if занимает одну строку.

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

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

Ошибка компиляции связана с отсутствием фигурных скобок {} после условия в операторе if. В Go после условия обязательно должна идти открывающая фигурная скобка, даже если тело if занимает одну строку.

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

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

Условие

На входе есть отсортированные по возрастанию массивы чисел:

  • suspects (подозреваемые)
  • innocents (невиновные)

Необходимо из массива подозреваемых исключить всех невиновных.

Примеры:

Input: suspects = [1, 2, 3, 4, 5], innocents = [2, 4] Output: [1, 3, 5]

Input: suspects = [3, 80, 123, 421, 936], innocents = [80, 936] Output: [3, 123, 421]

Ответ

Ошибка компиляции связана с отсутствием фигурных скобок {} после условия в операторе if. В Go после условия обязательно должна идти открывающая фигурная скобка, даже если тело if занимает одну строку.

В вашем коде:

if _, ok := set[v]; !ok
    result = append(result, v)

нужно добавить { и }:

if _, ok := set[v]; !ok {
    result = append(result, v)
}

Исправленный вариант функции:

func Exclude(a, b []int) []int {
    set := make(map[int]struct{})

    for _, v := range b {
        set[v] = struct{}{}
    }
    result := make([]int, 0)
    for _, v := range a {
        if _, ok := set[v]; !ok {
            result = append(result, v)
        }
    }
    return result
}

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

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

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

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