Почему я получаю недостающий возврат в конце функции в цикле for

Код выглядит так:

func Contain(livesJSON []LiveJSON, single db.Live) bool {
    for _, json := range livesJSON {
        if json.Start == single.Time && json.Team == single.HomeTeamId {
            return false
        } else {
            return true
        }
    }
}

У меня есть return как в if, так и в else.

Я не эксперт по go, но, вообще говоря, если цикл никогда не запускается, вы ничего не возвращаете.

emix 10.08.2018 10:12

Есть ли смысл зацикливаться? Основываясь на вашем условном выражении, вы вернетесь к первой итерации, если войдете в цикл.

Gavin 10.08.2018 15:21
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
4
3
590
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет гарантии, что тело цикла будет выполнено. Это тот случай, если вы передаете nil или пустой слайс для livesJSON. Таким образом вы ничего не вернете.

В этом случае вы должны вставить оператор return после цикла:

func Contain(livesJSON []LiveJSON, single db.Live) bool {
    for _, json := range livesJSON {
        if json.Start == single.Time && json.Team == single.HomeTeamId {
            return false
        } else {
            return true
        }
    }
    return false
}

Другие вопросы по теме