Sobes.tech
Назад к вопросам
Senior
4

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 } Ошибка компиляции # command-line-arguments ./main.go:39:32: syntax error: unexpected newline, expected { after if clause

Компании, где спрашивали
OZONOZON

Ответ от нейросети

sobes.tech AI

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