(Go) 4.流程控制

if else(分支结构)

Go语言中最常用的流程控制有iffor,而switchgoto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制

else ifelse都是可选的

func ifDemo1() {
    score := 65
    if score >= 90 {
        fmt.Println("A")
    } else if score > 75 {
        fmt.Println("B")
    } else {
        fmt.Println("C")
    }
}

特殊写法

func ifDemo2() {
    if score := 65; score >= 90 {  // score是属于if内部的局部变量,在if外面调用时会报错
        fmt.Println("A")
    } else if score > 75 {
        fmt.Println("B")
    } else {
        fmt.Println("C")
    }
fmt.Println(score) // undefined: score }

for(循环结构)

初始语句 -> 条件表达式 -> 循环体语句 -> 结束语句

for 初始语句;条件表达式;结束语句{
    循环体语句
}

条件表达式返回true时循环体不停地进行循环,直到条件表达式返回false时自动退出循环。

func forDemo() {
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
}

初始语句可以被忽略

func forDemo2() {
    i := 0
    for ; i < 10; i++ {
        fmt.Println(i)
    }
}

初始语句和结束语句都可以省略

func forDemo3() {
    i := 0
    for i < 10 {
        fmt.Println(i)
        i++
    }
}

无限循环, 可以通过breakgotoreturnpanic语句强制退出循环。

for {
    循环体语句
}

for range

  • 数组、切片、字符串返回索引和值。
  • map返回键和值。
  • 通道(channel)只返回通道内的值。
    s := "hello你好"
    for index,value := range s{
        fmt.Printf("%d %c ",index,value) // 0 h 1 e 2 l 3 l 4 o 5 你 8 好
    }

---  君子处其实,不处其华;治其内,不治其外   张居正  ----

猜你喜欢

转载自www.cnblogs.com/jiangzongyou/p/12159218.html