为什么在for循环的函数结尾处缺少返回值

时间:2018-08-10 08:10:41

标签: go

代码如下:

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
        }
    }
}

我在returnif中都有else

1 个答案:

答案 0 :(得分:8)

不能保证循环体将被执行。如果您传递nillivesJSON的空切片,就会出现这种情况。这样,您将不会返回任何东西。

在这种情况下,您必须在循环之后插入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
}