banner
音小董

哩哔哩哔

这世上的热闹出自孤单

第5章:フロー制御

引入#

控制语句分类:

  1. 顺序结构
  2. 分支结构
  3. 循环结构
    控制流程.png

分支结构#

if 分支#

单分支#

基本语法
if 条件表达式 {
逻辑代码
}
只有条件表达式为 true 时,才执行 {} 的逻辑代码

  1. 条件表达式两边可以加 (),建议不加
  2. If 和条件表达式中间必须有空格
  3. {} 必须要有
package main  
  
import "fmt"  
  
func main() {  
var a int = 25  
var b int = 15  
if a > b {  
fmt.Println("a大于b")  
}
//if后面可以用分号并列加入变量的定义
if a2 := 20; a2 < 10 {  
fmt.Println("a小于b")  
} 
}

実行結果:

a大于b

双分支#

基本语法
if 条件表达式 {
逻辑代码 1
} else {
逻辑代码 2
}
* 当条件表达式为 true 时,执行逻辑代码 1,否则执行逻辑代码 2 *

func main() {  
if a := 10; a > 5 {  
fmt.Println("a大于5")  
} else {  
fmt.Println("a不大于5")  
}  
  
if b := 10; b > 15 {  
fmt.Println("b大于15")  
} else {  
fmt.Println("b不大于15")  
}  
}

実行結果:

a大于5
b不大于5

多分支#

基本语法
if 条件表达式 {
逻辑代码 1
} else {
逻辑代码 2
}
......
else {
逻辑代码 n
}
* 依次执行,当有一个条件表达式为 true 时,直接执行对应的逻辑代码并结束运行,不再继续执行 *

package main  
  
import "fmt"  
  
func main() {  
var a int = 50  
if a > 10 {  
fmt.Println("a大于10")  
} else if a > 20 {  
fmt.Println("a大于20")  
} else if a > 30 {  
fmt.Println("a大于30")  
} else if a > 40 {  
fmt.Println("a大于40")  
} else {  
fmt.Println("以上都不对")  
}   
}

実行結果:

a大于10

switch 分支#

基本语法
switch 表达式 {
case 值 1, 值 2,......:
语句块 1
Case 值 3, 值 4,......:
语句块 2
......
default:
语句块
}
* 依次执行,当有一个 case 满足表达式时,直接执行对应的语句块并结束运行,不再继续执行 *
学生分数.png

package main  
  
import (  
"fmt"  
)  
  
func main() {  
var score int = 50  
switch score / 10 {  
case 10:  
fmt.Println("等级为A")  
case 9:  
fmt.Println("等级为A")  
case 8:  
fmt.Println("等级为B")  
case 7:  
fmt.Println("等级为C")  
case 6:  
fmt.Println("等级为D")  
case 5:  
fmt.Println("等级为E")  
case 4:  
fmt.Println("等级为E")  
case 3:  
fmt.Println("等级为E")  
case 2:  
fmt.Println("等级为E")  
case 1:  
fmt.Println("等级为E")  
case 0:  
fmt.Println("等级为E")  
default:  
fmt.Println("成绩有误")  
}  
}

実行結果:

等级为E

循环结构#

for 循环#

基本语法
for (初始表达式;布尔表达式;迭代因子){
循环体;
}

package main  
  
import "fmt"  
  
func main() {  
//求和1+2+3+4+5  
//方法1  
var n1 int = 1  
var n2 int = 2  
var n3 int = 3  
var n4 int = 4  
var n5 int = 5  
var sum1 int  
sum1 += n1  
sum1 += n2  
sum1 += n3  
sum1 += n4  
sum1 += n5  
fmt.Println(sum1)  
//方法2  
var sum2 int  
for i := 1; i <= 5; i++ {  
sum2 += i  
}  
fmt.Println(sum2)  
}

for range#

可遍历数组,切片,字符串,map 以及通道

基本语法
for key, val := range coll {

}

import "fmt"  
  
func main() {  
var str string = "mojito"  
//for i := 0; i < len(str); i++ {  
// fmt.Printf("%c \n",str[i])  
//}  
for i, value := range str {  
fmt.Printf("索引为:%d, 值为:%c \n", i, value)  
}  
}

実行結果:

索引为:0, 值为:m
索引为:1, 值为:o 
索引为:2, 值为:j 
索引为:3, 值为:i 
索引为:4, 值为:t 
索引为:5, 值为:o 

关键字#

break#

执行本次循环再跳出整个循环

package main  package main  
  
import "fmt"  
  
func main() {  
var sum1 int  
for i := 1; i <= 100; i++ {  
sum1 += i  
}  
fmt.Println(sum1)  
  
var sum2 int  
for j := 1; j <= 100; j++ {  
sum2 += j  
if sum2 > 300 {  
break  
}  
}  
fmt.Println(sum2)  
}

実行結果:

5050
325

continue#

跳出本次循环,再继续后面的循环

import "fmt"  
  
func main() {  
//取1-100以内被6整除的数  
for i := 1; i <= 100; i++ {  
if i%6 != 0 {  
continue  
}  
fmt.Println(i)  
}  
}

実行結果:

6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
96

goto#

跳到指定行执行

package main  
  
import "fmt"  
  
func main() {  
if 1 == 1 {  
goto a  
}  
fmt.Println("hello1")  
fmt.Println("hello2")  
fmt.Println("hello3")  
fmt.Println("hello4")  
fmt.Println("hello5")  
fmt.Println("hello6")  
fmt.Println("hello7")  
a:  
fmt.Println("hello8")  
}

実行結果:

hello8

return#

结束当前函数不继续执行

package main  
  
import "fmt"  
  
func main() {  
for j := 1; j < 10; j++ {  
if j == 7 {  
return  
}  
fmt.Println(j)  
}  
fmt.Println("hello golang")  
}

実行結果:

1
2
3
4
5
6
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。