mirror of
https://github.com/golang/go
synced 2024-11-21 18:54:43 -07:00
string range
R=rsc DELTA=22 (19 added, 0 deleted, 3 changed) OCL=34463 CL=34463
This commit is contained in:
parent
32aa5be6ef
commit
c77c3b0196
@ -489,10 +489,10 @@ and <code>while</code> and there is no <code>do-while</code>.
|
||||
There are three forms, only one of which has semicolons:
|
||||
</p>
|
||||
<pre>
|
||||
// Like a C for:
|
||||
// Like a C for
|
||||
for init; condition; post { }
|
||||
|
||||
// Like a C while:
|
||||
// Like a C while
|
||||
for condition { }
|
||||
|
||||
// Like a C for(;;)
|
||||
@ -521,10 +521,29 @@ for key, value := range m { // key is unused; could call it '_'
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
For strings, the <code>range</code> does more of the work for you, breaking out individual
|
||||
characters by parsing the UTF-8 (erroneous encodings consume one byte and produce the
|
||||
replacement rune U+FFFD). The loop
|
||||
</p>
|
||||
<pre>
|
||||
for pos, char := range "日本語" {
|
||||
fmt.Printf("character %c starts at byte position %d\n", char, pos)
|
||||
}
|
||||
</pre>
|
||||
<p>
|
||||
prints
|
||||
</p>
|
||||
<pre>
|
||||
character 日 starts at byte position 0
|
||||
character 本 starts at byte position 3
|
||||
character 語 starts at byte position 6
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Finally, since Go has no comma operator and <code>++</code> and <code>--</code>
|
||||
are statements not expressions, if you want to run multiple variables in a <code>for</code>
|
||||
you can use parallel assignment:
|
||||
you should use parallel assignment:
|
||||
</p>
|
||||
<pre>
|
||||
// Reverse a
|
||||
|
Loading…
Reference in New Issue
Block a user