< = "运算符。...">
美文网首页
go语言之流程控制

go语言之流程控制

作者: My_Fuzz | 来源:发表于2019-07-08 18:12 被阅读0次

    控制台输入

    // Scan scans text read from standard input, storing successive
    // space-separated values into successive arguments. Newlines count
    // as space. It returns the number of items successfully scanned.
    // If that is less than the number of arguments, err will report why.
    func Scan(a ...interface{}) (n int, err error) {
        return Fscan(os.Stdin, a...)
    }
    
    //示例
    var name string
    fmt.Print("请输入名称:")
    fmt.Scan(&name)
    fmt.Println(name)
    

    if

        //在Go语言中,可以通过 if 关键字进行条件判断, "{" 必须与 if 放在同一行,否则编译报错
        if true {
            fmt.Println(1)
        }else if true {
            fmt.Println(2)
        }else{
            fmt.Println(3)
        }
    

    值类型的数据都可以进行 "== !=" 运算符,只有数值类型可以进行 "> < = "运算符。

    for

        //循环体不停地循环,直到条件表达式返回 false 时自动退出循环, "{" 必须与 for 放在同一行,否则编译报错
        for 初始语句 ; 条件表达式 ; 变量迭代 {
            循环体代码
        }
    

    for 循环可以通过 break、goto、return、panic 语句强制退出循环

        //初始语句可以被忽略,但是初始化语句之后的 ";" 不能省略,i 的作用域也会发生改变,因为他在外部声明。 
        i := 0
        for ; i <10;i++{
            fmt.Println(i)
        }
        fmt.Println("====分割线====")
        //一起来猜一猜结果
        fmt.Println(i)
    

    for循环的执行顺序


    image.png
        //初始化变量,条件表达式,都可以省略,";" 不可以省略,省略后执行顺序也发生了改变。
        i := 0
        for ; ;i++  {
            if i >10{
                break
            }
            fmt.Println(i)
        }
        //再来猜一猜结果
        fmt.Println(i)
    
        //无限循环
        for{
            fmt.Println("无限循环")
        }
    

    for range

        //可以遍历 数组、切片、字符串、map、通道。
        str := "aaaa"
        for k,v := range  str{
            fmt.Println(k,string(v))
        }
    
        // "_" 表示占位符,忽略接受该变量
        str := "aaaa"
        for _,v := range  str{
            fmt.Println(string(v))
        }
    

    switch

        // Go 语言改进了 switch 的语法设计,避免人为造成失误,case 区间为独立快,不会继续执行。
        a := 9
        switch a {
            case 1:
                fmt.Println("第一区间")
            case 2:
                fmt.Println("第二区间")
            default:
                fmt.Println("默认区间")
        }
    
        // 一个 case 多个条件条件
        a := 2
        switch a {
            case 1,2:
                fmt.Println("第一区间")
            case 3,4:
                fmt.Println("第二区间")
            default:
                fmt.Println("默认区间")
        }
    
        // case 可以像 if 一样添加表达式 "," 可以添加多个条件
        a := 2
        switch {
            case a > 1 && a < 3:
                fmt.Println("第一区间")
            case a == 1,a <= 1:
                fmt.Println("第二区间")
            default:
                fmt.Println("默认区间")
        }
    
        // fallthrough 关键字,来兼容 case 向下执行的特性
        a := 2
        switch a {
            case 1,2:
                fmt.Println("第一区间")
                fallthrough
            case 3,4:
                fmt.Println("第二区间")
                fallthrough
            default:
                fmt.Println("默认区间")
        }
    

    goto

        // 使用 goto 可以跳出所有循环
        for i := 0;i < 10;i++{
            for ii := 0;ii < 10;ii++{
                if ii==2 {
                    goto E
                }
            }
        }
        E:
            fmt.Println("我跳出了循环")
    
    //统一错误处理
      err := "1"
      if err != "err"{
        goto AA
      }
    AA:
        fmt.Println(err)
    }
    
    //只有进行调用才会执行
    OuterLoop:
        for i := 0;i < 2; i++{
            for j := 0;j < 5;j++{
                fmt.Println(j)
                switch j {
                case 2:
                    fmt.Println(i,j)
                    continue  OuterLoop
                }
            }
        }
    }
    

    课后作业(30分钟)

    1.实现控制台登录功能。
    2.正确账号密码为admin,admin。
    3.每个账号密码错误次数大于3次后,每次登录进行账号锁定。
    4.代码中禁止出现break。
    5.代码量越少越好,并且能实现功能,本次进行代码排名(注释不算代码量)。
    6.2019-7-10之前提交。

    相关文章

      网友评论

          本文标题:go语言之流程控制

          本文链接:https://www.haomeiwen.com/subject/ojgzqctx.html