Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt

Use this file to discover all available pages before exploring further.

The else if clause in Go is a conditional control structure used to evaluate a sequence of mutually exclusive boolean expressions. It follows an initial if statement and executes its associated block of code only if its specific condition evaluates to true and all preceding if and else if conditions have evaluated to false.
if condition1 {
    // executes when condition1 is true
} else if condition2 {
    // executes when condition1 is false and condition2 is true
} else if condition3 {
    // executes when condition1 and condition2 are false, and condition3 is true
} else {
    // executes when all preceding conditions are false
}

Syntactical Rules and Mechanics

  • Lexical Formatting: Because Go’s lexer automatically inserts semicolons at the end of lines, the else if keywords must appear on the exact same line as the closing brace } of the preceding block. Placing else if on a new line will result in a compile-time syntax error.
  • Mandatory Braces: Curly braces {} are strictly required for all conditional blocks in Go, regardless of whether the block contains a single statement or multiple statements.
  • Omitted Parentheses: Parentheses () around the boolean condition are not required and are idiomatically omitted, though they are permitted if necessary to enforce operator precedence within a complex expression.
  • Short Initialization Statements: Like a standard if statement, an else if clause can execute a short initialization statement before evaluating its condition.

Variable Scoping

In Go, an else if is syntactically evaluated as an else block containing a nested if statement. Variables declared in the short initialization statement of an if or else if statement are scoped to the implicit lexical block of that statement, which inherently includes its else branch. Consequently, any variable declared in an initialization statement is in scope for its own block as well as all subsequent else if and else blocks in that specific chain.
if x := 10; x > 20 {
    // 'x' is in scope.
} else if y := 5; y < x {
    // Both 'x' and 'y' are in scope.
} else if x == 10 && y == 5 {
    // Both 'x' and 'y' are in scope here.
    // 'y' is available because this 'else if' is implicitly nested 
    // within the 'else' branch of the preceding condition.
} else {
    // Both 'x' and 'y' are in scope here.
}

// 'x' and 'y' are out of scope here.
Master Go with Deep Grasping Methodology!Learn More