< = "运算符。...">
美文网首页
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