Ошибка компиляции связана с отсутствием фигурных скобок {} после условия в операторе 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
}