Go for: Difference between revisions
Line 40: | Line 40: | ||
=<tt>for</tt> Controlled by a "range" Clause= | =<tt>for</tt> Controlled by a "range" Clause= | ||
A <tt>for</tt> statement with a "range" clause iterates through all entries of an array, slice, string or map, or values received on a channel. For each entry it assigns iteration values to corresponding iteration variables if present and then executes the block | A <tt>for</tt> statement with a "range" clause iterates through all entries of an array, slice, string or map, or values received on a channel. For each entry it assigns iteration values to corresponding iteration variables if present and then executes the block. | ||
For arrays, maps and slices, <tt>for</tt> exits when all values are returned. For channels, <tt>for</tt> exists when the channel is closed. | |||
<pre> | <pre> |
Revision as of 01:53, 4 April 2016
External
- Language Specification for Statements https://golang.org/ref/spec#For_statements
Internal
Overview
A for statement specifies repeated execution of a block. For more details on blocks, see Go blocks.
The iteration is controlled by a condition, a "for" clause, or a "range" clause.
for Controlled by a Condition
for a < b { a *= 2 }
The condition is evaluated before each iteration. If the condition is absent, is equivalent with true.
for { // do this forever }
for Controlled by a "for" Clause
for controlled by a "for" clause is equivalent with for controlled by a condition, but it has an extra init and post statement:
for i := 0; i < 10; i++ { // do something }
for Controlled by a "range" Clause
A for statement with a "range" clause iterates through all entries of an array, slice, string or map, or values received on a channel. For each entry it assigns iteration values to corresponding iteration variables if present and then executes the block.
For arrays, maps and slices, for exits when all values are returned. For channels, for exists when the channel is closed.
var a [10]string for i, s := range a { // type of i is int // type of s is string // and s == a[i] // do something }
More about range: