Golang loops

From wikinotes

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