Go语言之流程控制(三)

简介

  • 我们在《Go语言之基础语法(二)》中已经学习了Go语言的数据类型与运算符了。
  • 接下来,我们以此为基础,在其之上讲解GO语言的流程控制。

语句分类

  • 顺序语句:按照源代码的顺序去执行程序。
  • 分支语句:经由一定的判断,选择性地去执行一些代码。
  • 循环语句:需要重复执行一些代码。

分支语句

  • 无需小括号(),然而{}则是必须的。
  • Go语言中允许分支语句嵌套使用。

if语句

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
flag := true
if flag {
fmt.Println("Flag is True")
}
fmt.Println("Hello World")
}

if/else语句

  • Go语言中else语句仅允许拥有一个。
1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "fmt"

func main() {
flag := true
if flag {
fmt.Println("Flag is True")
} else {
fmt.Println("Flag is False")
}
fmt.Println("Hello World")
}

if/else if/else语句

  • 或许有时有多个匹配条件,那我们该怎么办呢,此时就是else if登场了。
  • 允许有多个else if语句同时存在。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {
score := 80
if score < 60 {
fmt.Println("The score is less than 60 points.")
} else if 60 <= score && score < 80 {
fmt.Println("The score is greater than or equal to 60 points and less than 80 points.")
} else {
fmt.Println("The score is greater than or equal to 80 points.")
}
}

switch/case语句

  • switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,适合于做定值判断。
  • switch语句执行的过程从上至下顺序执行,直到匹配成功,匹配项后面也不需要额外再加break语句。
  • 若一直没有匹配到值,则会执行default语句中的代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
"fmt"
"runtime"
)

func main() {
fmt.Print("Go runs on ")
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
fmt.Printf("%s.", os)
}
}
  • 没有条件的switch语句,这样可以简写if/else语句。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
true"fmt"
true"time"
)

func main() {
truet := time.Now()
trueswitch {
truecase t.Hour() < 12:
truetruefmt.Println("Good morning!")
truecase t.Hour() < 17:
truetruefmt.Println("Good afternoon.")
truedefault:
truetruefmt.Println("Good evening.")
true}
}

循环语句

  • Go语言中只有一种循环结构:for循环。
  • Go语言中允许循环语句嵌套使用。

语法格式

  • 无需小括号(),然而{}则是必须的。
  • 初始化语句、条件表达式与后置语句之间使用;号分隔。
1
2
3
for 初始化语句; 条件表达式; 后置语句 {
循环体
}

Go中的while

  • 其实初始化语句和后置语句是可选的。
1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
}
  • 此时你也可以去掉分号,因此C语言中的whileGo语言中也叫做for
1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}

无限循环

  • Go语言中,若是连循环条件表达式也省略了,这该循环就不会结束了,因此实现了无限循环。
1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
for {
fmt.Println("Hello World")
}
}

break与continue语句

break语句

  • break语句用于结束循环,即结束整个循环语句;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {

for index := 1; index < 10; index++ {
if index == 8 {
break
}
fmt.Println(index)
}

}

continue语句

  • continue语句用于结束本次循环,即转入循环的下一次迭代;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {

for index := 1; index < 10; index++ {
if index == 8 {
continue
}
fmt.Println(index)
}

}

有你就有世界,感谢有你,昕!
0%