Golang 四大跳转

优质
小牛编辑
141浏览
2023-12-01

和C语言一样,Go 语言中也有四大跳转语句,分别是 return、break、continue、goto

break 语句

  • Go 语言中的 break 语句可以用于,立即跳出 switch、for 和 select
  • 但不同的是 Go 语言中的 break 语句可以指定标签
package main
import "fmt"
func main() {
	for i:=0; i<10; i++{
		if(i == 5){
			break // 跳出所在循环
		}
		fmt.Println(i)
	}
}

利用 break 跳转到指定标签

  • 标签必须在使用之前定义
  • 标签后面只能跟 switch 和循环语句,不能插入其它语句
  • 跳转到标签之后 switch 和循环不会再次被执行
package main
import "fmt"
func main() {
outer:
	switch num:=2; num {
	case 1:
		fmt.Println(1)
	case 2:
		fmt.Println(2)
		break outer
	default:
		fmt.Println("other")
	}
	fmt.Println("come here")
}
package main
import "fmt"
func main() {
outer:
	for i:=0; i<5; i++{
		for j:=0; j<10; j++ {
			if (j == 5) {
				break outer// 跳出到指定标签
			}
			fmt.Println(j)
		}
	}
	fmt.Println("come here")
}

continue 语句

  • Go 语言中的 continue 语句可以用于,立即进入下一次循环
  • 但不同的是 Go 语言中的 continue 语句可以指定标签
package main
import "fmt"
func main() {
	for i:=0; i<5; i++{
		if (i == 2) {
			continue
		}
		fmt.Println(i)
	}
}

利用 continue 跳转到指定标签

  • 标签必须在使用之前定义
  • 标签后面只能跟循环语句,不能插入其它语句
  • 对于单层循环和直接编写 continue 一样
  • 对于多层循环,相当于跳到最外层循环继续判断条件执行
package main
import "fmt"
func main() {
outer:
	for i:=0; i<5; i++{
		fmt.Println("i =", i) // 0 1 2 3 4
		for j:=0; j<10; j++ {
			if (j == 5) {
				continue outer// 跳出到指定标签
			}
		}
	}
	fmt.Println("come here")
}

goto 语句

  • Go 语言中的 goto 和 C 语言中用法一样,用于在同一个函数中瞎跳
package main
import "fmt"
func main() {
	num := 1
outer:
	if(num <= 10){
		fmt.Println(num)
		num++
		goto outer // 死循环
	}
	fmt.Println("come here")
}
package main
import "fmt"
func main() {
	num := 1
	if(num <= 10){
		fmt.Println(num)
		num++
		goto outer // 死循环
	}
outer:
	fmt.Println("come here")
}

Go 语言中的 return 语句和 C 语言一模一样,都是用于结束函数,将结果返回给调用者