Go入门之控制语句(下)

815 阅读1分钟

「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战

写在前面👀

今天主要聊聊break,continue,goto🧈

一、标签(label)🍞

字段声明后面可以跟一个可选的字符串文字(标记),它称为相应字段声明中所有字段的属性🥐

  1. 三个语句都可以配合标签使用
  2. 标签名区分大小写(推荐大写),定以后若不使用会造成编译错误
  3. continue、break配合标签可用于多层循环跳出
  4. goto是调整执行位置,与continue、break配合标签的结果并不相同

二、break语句🥨

在Go中,break可以结束for、swich、和slect的代码块🥯

  • 语法👇
break
break label
  • 示例👇
package main

import "fmt"

func main() {
	/*标签,标记外循环的位置*/
OuterLoop:
	for i := 0; i < 10; i++ {
		fmt.Printf("💗\n")
		for j := 0; j < 10; j++ {
			fmt.Printf("💖\n")
			if i == 1 && j == 1 {
				/* 跳出 OuterLoop 代码块*/
				break OuterLoop
			}

		}
	}
	fmt.Println("跳出多重循环")
}

  • 结果👇

image.png

三、continue语句🥯

在Go中,continue只能用于for,用来跳过一次当前的循环🥖

  • 语法👇
continue
continue label
  • 示例👇
package main

import (
	"fmt"
	"time"
)

func main() {
	j := 1
	for i := 1; i <= 10; i++ {
		time.Sleep(time.Second)
		if i >= 5 && i <= 7 {
			fmt.Printf("暂停%d秒!\n", i-4)
			continue
		} else {
			fmt.Println(j)
			j++
		}

	}
}


  • 结果👇

image.png

四、goto语句🧀

在Go中,goto语句可以无条件地转移标签位置。通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能🥗 但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

  • 语法👇
goto label
  • 示例👇
package main

import (
	"fmt"
	"time"
)


func main() {
	for i := 1; i <= 10; i++ {
		time.Sleep(time.Second)
		if i == 5 {

			goto Out
		}
		fmt.Println(i)
	}
Out:
	fmt.Println("数到五秒我就去学习!")
}

  • 结果👇

image.png

写在后面🙌

感谢观看✨
如有不足,欢迎指出💖