流程控制【Go基础】

本文详细介绍了Go语言中的控制结构,包括if语句的使用,普通for循环和while循环的实现,以及switch语句的特性。还探讨了break和continue的普通和带标签的用法,以及它们在多层循环中的应用。此外,文章通过实例展示了如何在Go中有效地控制流程执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if

package main

import "fmt"

func main() {
	age := 18
	if age >= 18 && age < 20 {
		fmt.Println("成年了")
	} else if age > 30 {
		fmt.Println("30")
	} else {
		fmt.Print("666")
	}

	//此时age_1是局部变量
	if age_1 := 20; age_1 >= 18 && age_1 < 20 {
		fmt.Println("成年了")
	} else if age > 30 {
		fmt.Println("30")
	} else {
		fmt.Print("666")
	}
}

普通for循环

break,continue可以正常使用

package main

import "fmt"

func main() {
	for i := 1; i <= 10; i++ {
		fmt.Println(i)
	}
}

类似while循环的写法

for condition {
}

死循环

for {
}

switch

不用写break,

package main

import "fmt"

func main() {
	var n int = 5
	switch n {
	case 1:
		fmt.Println(1)
	case 2:
		fmt.Println(2)
	default:
		fmt.Println("defult")
	}
}

另外的写法

switch n := 2; n
case 1, 2, 3:
可以在case里写表达式,但是此时switch后面不用跟变量
package main

import "fmt"

func main() {
	var n int = 5
	switch {
	case n == 1:
		fmt.Println(1)
        // fallthrough关键字可以强制执行下一个case子句,注意是强制执行。
	case n == 2:
		fmt.Println(2)
	default:
		fmt.Println("defult")
	}
}

break

普通写法

package main

import "fmt"

func main() {
	for i := 0; i < 10; i++ {
		if i >= 5 {
			break
		}
		fmt.Println(i)
	}
	fmt.Println("end")
}
0
1
2
3
4
end

带标签的break

package main

import "fmt"

func main() {
MYLABEL:
	for i := 0; i < 10; i++ {
		if i >= 5 {
			break MYLABEL
		}
		fmt.Println(i)
	}
	fmt.Println("end")
}

此时会跳出到MYLABEL标签处,并且不会继续执行for循环,而是直接输出了end(跳出标签所标识的for,switch,select语句的执行)
那么将标签写在for循环后面呢

package main

import "fmt"

func main() {

	for i := 0; i < 10; i++ {
		if i >= 5 {
			break MYLABEL
		}
		fmt.Println(i)
	}
	fmt.Println("end")
MYLABEL:
	fmt.Print("123")

这种写法编译会报错,看来break并不能像goto一样想去哪就去哪

continue

普通写法

package main

import "fmt"

func main() {
	/* MYLABEL: */
	for i := 0; i < 10; i++ {
		if i == 5 {
			continue
		}
		fmt.Println(i)
	}
	fmt.Println("end")
}
结果是输出0-4,6-9,end

标签

package main

import "fmt"

func main() {
	for i := 0; i < 5; i++ {
	MTLABEL:
		for j := 0; j < 5; j++ {
			if i == 2 && j == 2 {
				continue MTLABEL
			}
			fmt.Printf("i: %v, j: %v\n", i, j)

		}
	}
	fmt.Println("end")
}
不会打印出 2,2
一般在多层循环嵌套时,可以直接跳出多层循环  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴塞罗那的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值