[go-05]流程控制

本文详细介绍了编程中的控制流结构,包括顺序执行、分支逻辑(单分支、双分支、多分支及if、switch语句),以及for、while和do-while循环的使用。同时涵盖了跳转语句如break、continue和goto,以及return语句的作用。
摘要由CSDN通过智能技术生成

一、流程控制

控制语句分为三类:顺序、选择、循环

二、顺序控制

1) 从上到下一条一条执行

三、分支控制

1) 单分支

2) 双分支

3) 多分支

四、if单双多分支

// 分支流程控制

func goIf() {



    // 设置随机数种子

    rand.Seed(time.Now().UnixNano())

    // 单分支

    num := rand.Intn(200)

    fmt.Println("num:", num)

    if num < 50 {

       fmt.Println("num 小于50")

    }





    // 双分支

    if num < 20 {

       fmt.Println("多分支小于20")

    } else {

       fmt.Println("多分支其他")

    }





    // 多分支

    age := rand.Intn(100) + 1

    fmt.Println("年龄:", age)

    if age <= 18 {

       fmt.Println("小朋友")

    } else if age > 18 && age < 65 {

       fmt.Println("大朋友啦")

    } else {

       fmt.Println("老小孩")

    }

}

五、switch分支控制

1) switch 从上到下逐一匹配,直到匹配为止。

2) 匹配项后面也不需要再加 break 与php不同

表达式

switch 表达式 {

    case表达式,表达式2 :
           语句块
    default:
           语句块

}



Js 与 PHP 的switch

switch(变量/表达式) {

    case 值1: 
        // case 1的代码块 
        break; 
         default: 
        // default的代码块

}

switch使用注意事项

1.switch / case后是一个表达式 (即:常量值,变量、一个有返回值的函等都可以)

2.case 后是常量,则不能重复

3.case 后表达式 和 switch 后表达式 类型必须一样

4.case 后面可以带多个值,使用逗号分隔,比如 case 值 1, 值 2

5.case 后面不需要带 break,区别于Java php js

6.default 语句不是必须的,位置也是可以随意的

7.switch 后也可以不带表达式,当做 if 分支来使用 ----- 不推荐

8.switch 后也可以直接声明 / 定义一个变量,分号结束,不推荐

9.switch 穿透,利用 fallthrough 关键字,如果在 case 语句块后增加 fallthrough,

则会继续执行下一个 case, 也叫 switch 穿透 ---- 不推荐使用

// switch语句

func goSwitch() {

    // 分数分等级

    score := rand.Intn(100)

    fmt.Println(score)

    b := 8

    switch score / 10 { // switch 后跟 常量、变量、函数

    case 9, 10: // 可以多个

       fmt.Println("A")

    case b: // 可以变量

       fmt.Println("B")

    case 7: // 可以常量,常量不能重复

       fmt.Println("C")

    case getInt(): // 可以函数返回值

       fmt.Println("D")

    default: // 不一定需要default

       fmt.Println("E")

    }

}



func getInt() int {

    return 6

}

八、for循环控制

for i := 1; i <= 10; i++{

}

// for 循环
func goFor() {
    // 经典
    for i := 1; i < 10; i++ {
       fmt.Println("for循环i:", i)

    }

    // 类似php的while循环while(条件表达式){}
    j := 1
    for j < 3 {
       fmt.Println("for循环j:", j)
       j++
    }

    //  类似php的do….while循环do{} while(条件表达式)
    k := 1
    for {
       fmt.Println("for循环k:", k)
       if k > 3 {
          break
       }
       k++
    }

    // 类似PHP的foreach 可以方便遍历字符串和数组
    str := "ab我们"
    for index, val := range str {
       fmt.Printf("index=%d,val=%c\n", index, val)
    }
}

九、跳转语句

1) break 默认跳出最近的for循环,可以用标签指定跳出标签对应的 for 循环

label:
    for m := 0; m < 3; m++ {
       for n := 0; n < 2; n++ {
          fmt.Println("m是:", m, "n是:", n)
          if m == 2 {
             break label
          }
       }
    }

2) continue 跳过本次循环

3) goto  一般不使用

    // goto
    l1 := 30
    if l1 > 10 {
       goto label1
    }
    fmt.Println("goto1")
    fmt.Println("goto2")

label1:
    fmt.Println("goto3")
    fmt.Println("goto4")

    // 打印goto3 goto4

4) return 跳出函数,哪里调用就return到哪里

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值