Golang流程控制语

前言

流程控制顾名思义就是  控制程序执行流程的语句 for循环、if else判断 

一、if分支

package main

import (
	"fmt"
)

//if 条件判断
func main() {
	age := 19
	//if else 两个判断分支
	if age > 18 {
		fmt.Println("澳门首家线上赌场开业啦")
	} else {
		fmt.Println("该写暑假作业了")
	}
	//多个判断分支
	if age > 35 {
		fmt.Println("人到中年")
	} else if age > 18 || age < 100 {
		fmt.Println("青年")
	} else {
		fmt.Println("好好学习")
	}
	//多个判断条件
	var name = "张根"
	if name == "张根" && age == 19 {
		fmt.Println("你永远18岁")
	}

	//for循环
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

}

if 条件循环语句 声明变量

Go的if条件分支里也可以声明变量,但是该变量只能在 if分支的作用域使用,这样也起到了节省内存的作用。

package main

import (
	"fmt"
)

//if 条件判断开辟作用域
func main() {
	if age := 19; age > 18 {
		fmt.Println("已经成年")
	}
	fmt.Println(age) //这里无法引用到age变量因为在if中声明的变量只能在if分支的作用域使用

}

  

switch语句  

使用switch语句简化 多个if条件判断

package main

import (
	"fmt"
)

//switch:简化大量的if分支
func main() {
	var n = 1
	if n == 1 {
		fmt.Println("大拇指")
	} else if n == 2 {
		fmt.Println("食指")
	} else if n == 3 {
		fmt.Println("中指")
	} else if n == 4 {
		fmt.Println("无名指")
	} else if n == 5 {
		fmt.Println("小拇指")
	} else {
		fmt.Println("无效的输入")
	}

	//使用 switch简化以上代码
	switch n = 3; n {
	case 1:
		fmt.Println("小拇指")
	case 2:
		fmt.Println("无名指")
	case 3:
		fmt.Println("中指")
	case 4:
		fmt.Println("事指")
	case 5:
		fmt.Println("大拇指")

	default: //默认分支
		fmt.Println("无效的输入")
	}

	//switch 中判断 奇数 偶数
	switch n := 8; n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
	case 2, 4, 6, 8, 10:
		fmt.Println("偶数")
	default:
		fmt.Println("无效的数字")
	}

	//case 分支使用表示式
	age := 19
	switch {
	case age < 25:
		fmt.Println("好好学习")
	case age > 25 && age < 35:
		fmt.Println("好好工作吧")
	case age > 35 && age < 60:
		fmt.Println("好好享受生活把")
	default:
		fmt.Println("好好活着")

	}

	//fall through 下沉,语法执行满足1个case条件之后,再下沉1个case去判断(previouscase || next case)
	s := "a"
	switch {
	case s == "a":
		fmt.Println("a")
		fallthrough
	case s == "b":
		fmt.Println("b")
	}

	//既打印a 也打印 b

}

  

 

二、for循环

for循环基本格式

设置i的初始值为0,当i小于10时,每次循环i+1
package main

import (
	"fmt"
)

//for循环
func main() {
	//基本格式
	//i的初始值为0,当i小于10时,每次循环i+1
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

}

变种

package main

import (
	"fmt"
)

func main() {
	//变种1
	var i = 5
	for ; i < 10; i++ {
		fmt.Println(i)
	}
	//变种2
	for i := 7; i < 10; i++ {
		fmt.Println(i)
	}
	//变种3
	var j = 9
	for j < 10 {
		fmt.Println(i)
		j++
	}
}

for rang键值对循环

package main

import (
	"fmt"
)

func main() {

	//键值对循环 for range
	var str1 = "张根"
	for i, v := range str1 {
		fmt.Printf("索引:%d 值:%c
", i, v)

	}

}

break 和 continue

package main

import (
	"fmt"
)

func main() {
	//当i=5时跳出for循环
	for i := 0; i < 10; i++ {
		if i == 5 {
			break //break跳出for循环
		}
		fmt.Println(i)
	}
	//当i=5是忽略本次循环
	for i := 0; i < 9; i++ {
		if i == 5 {
			continue
		}
		fmt.Println(i)

	}
}

break and continue代码跳转

package main

import (
	"fmt"
)

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
", i, j)
		}
	}
}

func BreakDemo() {
break1:
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break break1
			}
			fmt.Printf("%v-%v
", i, j)
		}
	}
	fmt.Println("结束")
}

func main() {
	BreakDemo()
	ContinueDemo()
}

  

  

Go打印乘法表

package main

import (
	"fmt"
)

//打印乘法表
func main() {
	for i := 1; i < 10; i++ {
		for j := 1; j < i; j++ {
			fmt.Printf("%d*%d=%d	", j, i, j*i)
		}
		fmt.Println()
	}

}

Goto 跳出多层for循环

package main

import (
	"fmt"
)

//跳出多层for循环
func main() {
	//设置标志位
	var flag = false
	for i := 0; i < 10; i++ {
		for j := 'A'; j < 'Z'; j++ {
			if j == 'C' {
				flag = true
				break //跳出内层循环
			}
			fmt.Printf("%v-%c
", i, j)

		}
		if flag {
			break //跳出外层循环
		}

	}

	//使用go to语句跳出多层for循环
	for i1 := 0; i1 < 10; i1++ {
		for j1 := 'a'; j1 < 'z'; j1++ {
			if j1 == 'c' {
				goto lable1 //goto 直接跳到定义lable1的位置执行
			}
			fmt.Printf("%v-%c
", i1, j1)

		}

	}
lable1: //定义1个 lable
	fmt.Println("结束了")

}

  

参考

原文地址:https://www.cnblogs.com/sss4/p/12536755.html