流程控制

 

 go的循环中,可以使用return。结束当前循环的执行

package main
import "fmt"

func main() {

    fmt.Println("11111")
    fmt.Println("22222")
    fmt.Println("33333")
    return
    fmt.Println("44444")
    fmt.Println("55555")
    fmt.Println("66666")
     
}
return

 

#### if #####

分支控制:

package main

import "fmt"

func main() {
    var age int
    fmt.Println("请输入年龄:")
    fmt.Scanln(&age)

    if age > 18 {
        fmt.Println("年龄大于18岁")
    }
}
单分支
package main

import "fmt"

func main() {
    var age int
    fmt.Println("请输入年龄:")
    fmt.Scanln(&age)

    if age > 18 {
        fmt.Println("年龄大于18岁")
    } else {
        fmt.Println("年龄小于18岁")
    }
}
双分支
package main

import "fmt"

func main() {
    var age int
    fmt.Println("请输入年龄:")
    fmt.Scanln(&age)

    if age > 60 {
        fmt.Println("年龄大于60岁")
    } else if age < 60 && age > 30 {
        fmt.Println("年龄30-60岁之间")
    } else {
        fmt.Println("年龄小于30岁")
    }
}
多分支

 

在一个分支中,嵌套另一个分支
if 条件表达式 {
    if 条件表达式 {
        XXX
    } else {
        XXX
    }
}
嵌套分支

 

#### switch #####

package main

import "fmt"

func main() {
    var name string
    fmt.Println("请输入名字:")
    fmt.Scanln(&name)

    switch name {
        case "jack":
            fmt.Println("我是jack")
        case "tom":
            fmt.Println("我是tom")
        default:
            fmt.Println("输入不对")
    }

}
switch分支

 switch / case后,可以是常量,变量,一个有返回值的函数

 switch / case后,各个表达式的数据类型必须一致

case后,可以带多个表达式,使用逗号分隔

case后的表达式如果是常量,则要求不能重复

case后不需要带break,当程序匹配成功后,会执行对应的代码,之后退出switch,如果匹配不到,执行default

default,不是必须有的

package main

import "fmt"

func main() {
    var score int = 90
    switch {
        case score > 90:
            fmt.Println("成绩优秀")
        case 70 <= score && score <= 90 :
            fmt.Println("成绩优良")
        case 60 <= score && score <= 70 :
            fmt.Println("成绩及格")
    }

}
switch后也可以不带表达式,类似 if -- else 分支来使用。
package main

import "fmt"

func main() {
    switch score := 90; {
        case score > 90:
            fmt.Println("成绩优秀")
        case 70 <= score && score <= 90 :
            fmt.Println("成绩优良")
        case 60 <= score && score <= 70 :
            fmt.Println("成绩及格")
    }

}
switch后也可以直接定义一个变量,分号结束。不推荐使用。
package main

import "fmt"

func main() {
    var num int = 10

    switch num {
        case 10:
            fmt.Println("11111")
            fallthrough
        case 20:
            fmt.Println("22222")
            fallthrough
        case 30:
            fmt.Println("33333")
        case 40:
            fmt.Println("44444")
    }

}
switch穿透,fallthrough
// 判断某个interface变量中实际指向的变量类型
package main
import "fmt"

func main() {
    var x interface{}
    var y = 10.0
    x = y

    switch i := x.(type) {
        case nil:
            fmt.Printf("x的类型:%T",i)
        case int:
            fmt.Printf("x是int型")
        case float64:
            fmt.Printf("x是float64型")
        case func(int) float64:
            fmt.Printf("x是func(int)型")
        case bool,string:
            fmt.Printf("x是bool或string型")
        default:
            fmt.Printf("未知型")
    }
}
type switch

 

 

 #### for #####

package main
import "fmt"

func main() {

    for i := 1;i <= 10;i++ {
        fmt.Println("你好i",i)
    }
    
    j := 1
    for j <= 10 {
        fmt.Println("你好j",j)
        j++
    }

    k := 1
    for {
        if k <= 10 {
            fmt.Println("你好k",k)
        } else {
            break
        }
        k++
    }

}
三种方式

 

// for 循环有中文的字符串
package main
import "fmt" func main() { var str string = "abcdefg你好" str2 := []rune(str) for i := 0;i< len(str2);i++ { fmt.Printf("%c \n",str2[i]) } }

 

 

package main
import "fmt"

func main() {

    lable2:
    for i := 0;i<5;i++ {
        for j:=0;j<5;j++ {
            if j == 2 {
                break lable2
                // break
            }
            fmt.Println("j=",j)
        }
    }
}

// break时,依据标签,终止 最外层for 循环的执行
break可以指定终止哪一层的语句
package main
import "fmt"

func main() {

    lable2:
    for i := 0;i<5;i++ {
        for j:=0;j<5;j++ {
            if j == 2 {
                continue lable2
                // continue
            }
            fmt.Println("j=",j)
        }
    }
}

// continue时,跳转到 最外层for 循环处执行
continue,如上break

 

 

  指定跳转到某一行,不推荐使用

package main
import "fmt"

func main() {

    fmt.Println("11111")
    fmt.Println("22222")
    goto label1
    fmt.Println("33333")
    fmt.Println("44444")
    label1:
    fmt.Println("55555")
    fmt.Println("66666")

}
goto

 

posted on 2021-03-23 10:23  二十四岁半  阅读(35)  评论(0编辑  收藏  举报

导航