Golang培训班_Go语言支持哪三种循环控制语句?
老男孩IT教育
常见问题
2021年12月20日 17:00
循环控制语句可以控制循环体内语句的执行过程。GO语言支持goto、break、continue 三种循环控制语句,三个语句都可以配合标签(label)使用,标签名区分大小写,定义后不使用会造成编译错误。
循环控制语句可以控制循环体内语句的执行过程。GO语言支持goto、break、continue三种循环控制语句,三个语句都可以配合标签(label)使用,标签名区分大小写,定义后不使用会造成编译错误。
goto语句
Go语言支持在函数内goto跳转。goto语句可以无条件地转移到过程中指定的行,通常与条件语句配合使用。可用来实现条件转移、构成循环、跳出循环体等功能。实例如下:
1、先定义标签后定义goto语句
package main
import "fmt"
func main() {
var i int = 10
GO:
for i < 20 {
if i == 15 { //跳过迭代
i = i + 1
goto GO
}
fmt.Printf("i的值为 : %d\n", i)
i++
}
}
2、先定义goto语句后定义标签
package main
import "fmt"
func main() {
var i int
for {
fmt.Println(i)
i++
if i > 2 {
goto oldboy
}
}
oldboy:
fmt.Println("golang")
}
注意:goto语句与标签之间不能有变量声明,否则编译错误。
package main
import "fmt"
func main() {
fmt.Println("start")
goto Loop
var say = "hello oldboy"
fmt.Println(say)
Loop:
fmt.Println("end")
}
编译错误:
./main.go:7:7: goto Loop jumps over declaration of say at ./main.go:8:6
break语句
1、break语句中断当前for循环,并开始执行循环之后的语句
package main
import "fmt"
func main() {
var i int = 10
for i < 20 {
fmt.Printf("i 的值为 : %d\n", i)
i++
if i > 15 {
// break 语句跳出循环
break
}
}
}
2、break语句中断当前for range循环,并开始执行循环之后的语句
package main
import (
"fmt"
)
func main() {
m := map[int]string{
1: "oldboy",
2: "Linux",
3: "Python",
4: "Java",
5: "Golang",
}
for k, v := range m {
fmt.Printf("%d => %s \n", k, v)
if v == "Golang" {
// break 语句跳出循环
break
}
}
}
3、break语句在执行一条case后跳出switch循环
package main
import (
"fmt"
)
func main() {
name := "Golang"
switch name {
case "oldboy":
fmt.Println(name)
break
case "Linux":
fmt.Println(name)
break
case "Golang":
fmt.Println(name)
break
case "Python":
fmt.Println(name)
break
case "Java":
fmt.Println(name)
break
case "DBA":
fmt.Println(name)
break
}
}
4、break语句在执行一条case后跳出select循环
package main
import "fmt"
func main() {
var ch chan int
ch = make(chan int, 1)
// ch <- 1
select {
case i := <-ch:
fmt.Printf("received %d %s", i, " from ch\n")
break
default:
fmt.Println("break")
break
}
}
5、Break label语句跳出多层嵌套循环
package main
import (
"fmt"
)
func main() {
fmt.Println("start")
Exit:
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if i+j > 15 {
fmt.Println("exit")
break Exit
}
}
}
fmt.Println("end")
}
break标签除了可以跳出for循环,还可以跳出select、switch循环。
注意:label要写在循环的开始而不是结束的地方,和goto语句不一样。
package main
import (
"fmt"
)
func main() {
fmt.Println("start")
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if i+j > 15 {
fmt.Println("exit")
break Exit
}
}
}
Exit:
fmt.Println("end")
}
编译错误:
./main.go:14:11: break label not defined: Exit
./main.go:18:1: label Exit defined and not used
continue语句
1、continue语句在for循环和for range 循环中用于跳过当前循环的剩余语句,然后继续进行下一轮循环。
package main
import "fmt"
func main() {
// for 循环
for i := 0; i < 5; i++ {
if i == 2 {
continue
}
fmt.Printf("i 的值为 : %d\n", i)
}
// for range 循环
sli := []string{"Linux", "Python", "Golang", "Java"}
for _, v := range sli {
fmt.Println(v)
if v != "Golang" {
continue
}
fmt.Println("The old boy welcomes you.")
}
}
2、continue label语句可在多级嵌套循环中跳出
package main
import "fmt"
func main() {
BreakLabel:
for i := 0; i < 3; i++ {
ContinueLabel:
for j := 0; j < 5; j++ {
if j > 2 {
continue ContinueLabel
}
if i > 1 {
break BreakLabel
}
fmt.Print(i, ":", j, " ")
}
fmt.Println()
}
}
随着技术领域的逐步拓展,Go语言工程师的需求量也在逐步增加。老男孩教育go培训课程内容多次更新迭代,更加注重学员的实践动手能力以及思维的形成,杜绝纸上谈兵,全企业真实案例结合理论授课,让学员更好的过渡到工作岗位。想要了解go语言课程信息,欢迎咨询右下角在线客服。
推荐阅读:
