Non-Boolean Used as Condition

non-boolean condition in if statement

Quick Answer

Go requires explicit boolean expressions in if conditions. Unlike C, integers and pointers are not automatically treated as true/false.

Why This Happens

Go does not have truthy/falsy values like Python or JavaScript. Every condition in an if, for, or other control statement must be an explicit boolean expression. You cannot use an integer, string, or pointer directly as a condition.

The Problem

func main() {
    count := 5
    if count { // non-boolean condition
        fmt.Println("has items")
    }
}

The Fix

func main() {
    count := 5
    if count > 0 {
        fmt.Println("has items")
    }
}

Step-by-Step Fix

  1. 1

    Identify the non-boolean

    Find the if condition that uses a non-boolean type.

  2. 2

    Add a comparison

    Convert to an explicit boolean: count > 0, str != "", ptr != nil.

  3. 3

    Check other conditions

    Review other conditions for similar non-boolean usage.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free