流程控制

在程序中,程序运行的流程控制决定程序是如何执行的,主要有三在流程控制语句。

1)顺序控制

2)分支控制

3)循环控制

顺序控制

程序从上到下逐行执行,中间没有任何判断和跳转


顺序控制流程图

Golang程序的流程控制_基本语法


Golang中定义变量时采用合法的前向引用如:

func min() {
var i int = 10
var j int = i + 20
fmt.Println(j)
}


分支控制

分支控制就是让程序有选择执行,有三种形式

1,单分支

2,双分支

3,多分支


单分支控制

基本语法


if 条件表达式 {
执行代码块
}


注:当条件表达式为true时,就会执行{}中的代码,{} 必须要有,

代码示例:

package main
import "fmt"

func main() {
var age int
fmt.Println("请输入年龄")
fmt.Scanln(&age)

if age > 18 {
fmt.Println("你已成年!")
}
}

Golang程序的流程控制_双分支_02


单分支流程控制图

Golang程序的流程控制_嵌套_03

双分支控制

基本语法


if 条件表达式 {
执行代码块1
}else {
执行代码块2
}


注:当条件表达式成立,执行代码块1,否则执行代码块2,{}是必须要有的

代码示例:

package main
import "fmt"

func main() {
var age int
fmt.Println("请输入年龄")
fmt.Scanln(&age)

if age > 18 {
fmt.Println("你已成年!")
} else {
fmt.Println("你是未成年")
}
}


Golang程序的流程控制_基本语法_04


双分支流程图

Golang程序的流程控制_代码块_05


对双分支的总结

1,从上面程序来看,条件表达式就是 age > 18

2,  执行代码块1 :fmt.Println("你已成年!")

3,执行代码块2:fmt.Println("你是未成年")

4,双分支只会执行其中的一个分支


多分支控制

基本语法

if 条件表达式1 {
执行代码块1
}else if 条件表达式2{
执行代码块2
}
....
else {
执行代码块n
}


多分支的判断流程

先判断条件表达式1是否成立,如果为真,就执行代码块1

如果条件表达式1不成立,就去判断条件表达式2是否成立,如果条件表达式2为真,就执行代码块2

依次类推

如果所有的条件表达式不成立,则执行else的语句块


多分支控制流程图

Golang程序的流程控制_代码块_06


代码示例:

package main
import "fmt"

func main() {
var score int
fmt.Println("请输入成绩")
fmt.Scanln(&score)

if score >= 90 {
fmt.Println("成绩优秀")
} else if score >=80 && score < 90{
fmt.Println("成绩良好")
}else if score >=60 && score < 80 {
fmt.Println("成绩中等")
}else {
fmt.Println("成绩不及格")
}
}

Golang程序的流程控制_代码块_07


嵌套分支

基本语法 

在一个分支结构中用完整的嵌套了另一个完整的分支结构,里面的分支的结构为内层分支,外面的分支结构称为外层分支


基本语法

if条件表达式{
if条件表达式{
}else{
}
}

注: 嵌套会支不宜过多,建议控制在3层内


代码示例

package main
import "fmt"

func main() {
var second float64
fmt.Println("请输入秒数")
fmt.Scanln(&second)

if second <= 8 {
var gender string
fmt.Println("请输入性别")
fmt.Scanln(&gender)
if gender == "男" {
fmt.Println("进入男子决赛组")
}else {
fmt.Println("进入女子决赛组")
}
} else {
fmt.Println("输入有误")
}
}

Golang程序的流程控制_代码块_08