mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 19:41:43 +08:00
精校:5.6
This commit is contained in:
@@ -15,4 +15,4 @@ Golang 编程:245386165
|
||||
|
||||
|更新日期 |更新内容
|
||||
|----------|------------------
|
||||
|2015-07-18|
|
||||
|2015-07-19|5.6 标签与 goto
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user