Golang 流程控制

流程控制,条件语句,选择语句,跳转语句

流程控制

条件语句 if…else…else if

func example(x int) int { 
    if x == 0 {
        return 5 
    } else {
        return x 
    }
}
  • 条件语句不需要使用括号将条件包含起来();
  • 无论语句体内有几条语句,花括号{}都是必须存在的;
  • 左花括号{必须与if或者else处于同一行;
  • 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔;
  • 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中

选择语句 switch.case.select

fallthrough 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case

switch i { 
    case 0:
        fmt.Printf("0") 
    case 1:
        fmt.Printf("1") 
    case 2:
        fallthrough
    case 3:
        fmt.Printf("3") 
    case 4, 5, 6:
        if(i == 4) {
            fmt.Printf("4")
        } else {
            fmt.Printf("5 or 6")
        }
        // fmt.Printf("4, 5, 6") 
    default:
        fmt.Printf("Default")
}

循环语句 for range

// case one
sum := 0
for i := 0; i < 10; i++ {
    sum += i
    fmt.Println(sum)
}

// case two
sum := 0
i := 0
for {
    sum += i
    fmt.Println(sum)
    i++
    if i > 10 {
        break
    }
}

// case three
a := []int{1,2,3,4,5,6,7}
for i,j := 0,len(a) - 1; i < j; i,j = i + 1, j -1 {
    a[i], a[j] = a[j], a[i]
}
fmt.Println(a)

// 4. for循环同样支持continue和break来控制循环,但是它提供了一个更高级的break,可以选择中断哪一个循环
for j := 0; j < 5; j++ {
    for i :=0; i <10; i++ {
        if i > 5 {
            continue
        }
         fmt.Println(i)
     }
}

跳转语句 goto

i := 0
HERE:
    fmt.Println(i)
    i++
if i < 10 {
    goto HERE
}
fmt.Println("test")