Golang loops: Difference between revisions

From wikinotes
No edit summary
 
Line 23: Line 23:
= For Loops =
= For Loops =
<blockquote>
<blockquote>
== initializer/condition ==
== Infinite ==
<blockquote>
<syntaxhighlight lang="go">
for {
    // ...
}
</syntaxhighlight>
</blockquote><!-- Infinite -->
 
== Initializer / Condition ==
<blockquote>
<blockquote>
initializer/condition based loops
initializer/condition based loops
Line 40: Line 49:
</blockquote><!-- initializer/condition -->
</blockquote><!-- initializer/condition -->


== over condition ==
== Over condition ==
<blockquote>
<blockquote>
<syntaxhighlight lang="go">
<syntaxhighlight lang="go">
Line 50: Line 59:
</blockquote><!-- condition -->
</blockquote><!-- condition -->


== over arrays/maps ==
== Over arrays/maps ==
<blockquote>
<blockquote>
iterating over arrays/maps
iterating over arrays/maps

Latest revision as of 23:15, 6 June 2022

Breaking, Continuing, etc.

break      // exit loop without finishing
continue   // skip to next iteration
for i := 0; i < 10; i++ {
    // skip to next iteration
    if i % 2 {
        continue
    }

    // exit loop immediately
    if i == 5 {
        break
    }
}

For Loops

Infinite

for {
    // ...
}

Initializer / Condition

initializer/condition based loops

for i := 0; i < 10; i++ {
    sum += i
}

initializer/condition based loops with multiple variables

for i, j :- 0, 0; i < 10; i, j = i+1, j+1 {
    // ...
}

Over condition

i := 0
for i < 5 {
    i++
}

Over arrays/maps

iterating over arrays/maps

// iterate key/values in map
for key, value := range oldMap {
    fmt.Println(key + "=" + value)
}

// iterate only keys in map (simply don't assign val)
for key := range oldMap {
    fmt.Println(key)
}

// iterate only values in map
for _, value := range oldMap {
    fmt.Println(value)
}

Labels

Go has a GOTO-like syntax for supporting breaking out of complex logic.

func main() {
Loop:  // <-- label, can be any word
    for i < 5 {
        for j < 5 {
            if i == 3 && j == 3 {
                break Loop  // <-- breaks out of all loops defined under label 'Loop'
            }
        }
    }
}