精校:5.6

This commit is contained in:
Unknwon
2015-07-19 03:01:09 +08:00
parent 4501794707
commit 8bc607e71d
2 changed files with 10 additions and 10 deletions

View File

@@ -1,12 +1,12 @@
# 5.6 标签与 goto
for、switch 或 select 语句都可以配合标签label形式的标识符使用即某一行第一个以冒号(":")结尾的单词gofmt 会将后续代码自动移至下一行)。
for、switch 或 select 语句都可以配合标签label形式的标识符使用即某一行第一个以冒号`:`结尾的单词gofmt 会将后续代码自动移至下一行)。
Listing 5.13 [for6.go](examples/chapter_5/for6.go)
示例 5.13 [for6.go](examples/chapter_5/for6.go)
(标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母)
```
```go
package main
import "fmt"
@@ -30,9 +30,9 @@ LABEL1:
您可以看到当 j==4 和 j==5 的时候,没有任何输出:标签的作用对象为外部循环,因此 i 会直接变成下一个循环的值,而此时 j 的值就被重设为 0即它的初始值。如果将 continue 改为 break则不会只退出内层循环而是直接退出外层循环了。另外还可以使用 goto 语句和标签配合使用来模拟循环。
Listing 5.14 [goto.go](examples/chapter_5/goto.go)
示例 5.14 [goto.go](examples/chapter_5/goto.go)
```
```go
package main
func main() {
@@ -59,9 +59,9 @@ func main() {
如果您必须使用 goto应当只使用正序的标签标签位于 goto 语句之后),但注意标签和 goto 语句之间不能出现定义新变量的语句,否则会导致编译失败。
Listing 5.15 [goto2.go](examples/chapter_5/got2o.go)
示例 5.15 [goto2.go](examples/chapter_5/got2o.go)
```
```go
// compile error goto2.go:8: goto TARGET jumps over declaration of b at goto2.go:8
package main
@@ -81,7 +81,7 @@ func main() {
1.
```
```go
i := 0
for { //since there are no checks, this is an infinite loop
if i >= 3 { break }
@@ -94,7 +94,7 @@ fmt.Println(“A statement just after for loop.”)
2.
```
```go
for i := 0; i<7 ; i++ {
if i%2 == 0 { continue }
fmt.Println(Odd:, i)