Go语言基础之流程控制

Go语言最常用的是if和for,而switch和goto主要是简洁代码、降低重复代码而生的结构、属于拓展类流程控制

 

if  else(分支结构)

//  基本写法
func ifDemo1() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}

//  特殊写法
func ifDemo2() {
	if score := 65; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}

 

for循环

for 初始语句;条件表达式;结束语句{
    循环体语句
}


//初始语句和结束语句都可以省略
func forDemo() {
	i := 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
}


func forDemo2() {
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}
}

 

无限循环

for{
   循环体语句
}

for循环可以通过break、goto、return、panic语句强制退出循环

 

for range(键值循环)

Go中使用for range遍历数组、切片、字符串、map及通道。通过for range遍历的返回值有以下规律

    1.数组、切片、字符串返回索引和值。

    2.map返回键和值。

    3.通道(channel)只返回通道内的值。

 

switch case

func main() {
	fighter := 3
	switch fighter {
	case 1:
		fmt.Println("case1")
	case 2:
		fmt.Println("case2")
	case 3:
		fmt.Println("case3")
	case 4, 5, 6:
		fmt.Println("case 4,5,6")
	default:
		fmt.Println("无")
	}
}
func main() {
	age := 30
	switch {
	case age < 25:
		fmt.Println("好好学习吧")
	case age > 25 && age < 35:
		fmt.Println("好好工作吧")
        fallthrough
	case age > 60:
		fmt.Println("好好享受吧")
	default:
		fmt.Println("活着真好")
	}
}

fallthrough 是执行满足条件case的下一个case,是为了兼容C语言中的case设计的

 

goto

goto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto语句能简化一些代码的实现过程。 例如双层嵌套的for循环要退出时:

func gotoDemo2() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				// 设置退出标签
				goto breakTag
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	// 标签
breakTag:
	fmt.Println("结束for循环")
}

 

break

break可以结束for、switch、select的代码块。还可以在break后边添加标签,代表结束某个代码块,标签要求必须定义对应的for、switch和select代码块上

func breakDemo1() {
BREAKDEMO1:
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break BREAKDEMO1
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	fmt.Println("...")
}

 

continue

continue可以结束当前循环,继续下次循环迭代,仅限在for中使用。在continue后添加标签时,表示开始标签对应的循环。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值