Golang: loop
Go has only one loop construct, the for-loop.
for i := 0; i < 4; i++ { body }
-
Loop a fixed number times with a incremental variable.
Scope of i is the whole for statement.
Note: no parenthesis after the
for
keyword. Adding parenthesis creates invalid syntax. Curly brackets {} are always required.package main import "fmt" func main() { for i := 0; i < 4; i++ { fmt.Printf("%v ", i) } } // 0 1 2 3
for test {body}
-
Test a condition before repeat. (like “while loop”)
package main import "fmt" func main() { var xx = 1 // for-loop with just test condition // this acts like “while loop” in other langs for xx <= 3 { fmt.Printf("%v ", xx) xx++ } } // 1 2 3
for {body}
-
Infinite loop. Break the loop by keyword
break
, or use keywordcontinue
to skip rest of the inner loop.package main import "fmt" func main() { var xx = 1 // infinite loop for { fmt.Printf("%v ", xx) xx++ // use break to exit if xx > 4 { break } } } // 1 2 3 4
For Range Loop
for i, x := range array { fmt.Println(i, x) }
-
Go thru
Array
or
Slice
.
If one of the variable you don't need, name it
_
, else compiler will complain. The_
is called Blank Identifier. for key, value := range map { fmt.Println(key, val) }
- Go thru Map.
keyword break
The keyword break
lets you break a loop. Useful when you want to exit the loop when some condition is met.
package main import "fmt" func main() { for i := 0; i < 9; i++ { fmt.Printf("%v ", i) if i == 4 { break } } } // 0 1 2 3 4
keyword continue
The keyword continue
skips
the rest statements of the inner loop and continue at the beginning of the inner loop.
package main import "fmt" func main() { for i := 1; i <= 3; i++ { for j := 1; j <= 99; j++ { if j <= 2 { fmt.Println(i, j) } else { continue fmt.Printf("%v\n", "this never reached") } } } } // 1 1 // 1 2 // 2 1 // 2 2 // 3 1 // 3 2