Go 第4章 流程控制语句 Go 第4章 流程控制语句

2021-06-09

一、递增递减语句

控制整数自身的增加和减少

  • ++ 自增

  • -- 自减

package main

import "fmt"

func main() {
   a := 1
   a++
   fmt.Println(a)
   a--
   fmt.Println(a)
}

备注:没有 ++a、--a

二、条件语句

  • if 后面的条件没有括号

  • if 的条件里可以赋值

  • if 的条件里赋值的变量作用域就在这个 if 语句里

package main

import (
   "fmt"
   "math/rand"
)

func main() {
   a := rand.Int()
   if a > 0 {
      fmt.Println("大于0")
   } else if a == 0 {
      fmt.Println("等于0")
   } else {
      fmt.Println("小于0")
   }
}

三、选择语句

  • switch 会自动 break,除非使用 fallthrough

  • switch 后可以没有表达式

package main

import (
   "fmt"
)

func main() {
   fmt.Println(
      grade(0),
      grade(59),
      grade(60),
      grade(82),
      grade(99),
      grade(100),
   )
}
func grade(score int) string {
   g := ""
   switch {
   case score < 0 || score > 100:
      panic(fmt.Sprintf("Wrong score: %d", score))
   case score < 60:
      g = "F"
   case score < 80:
      g = "C"
   case score < 90:
      g = "B"
   case score <= 100:
      g = "A"
   }
   return g
}

四、循环语句

  • for 的条件里不需要括号

package main

import (
   "fmt"
)

func main() {
   fmt.Println(sum())
}
func sum() int {
   sum := 0
   for i := 1; i <= 100; i++ {
      sum += i
   }
   return sum
}
  • 没有 while

  • for 的条件里可以省略初始条件(相当于 while),结束条件,递增表达式

package main

import (
   "fmt"
)

func main() {
   a := 0
   for a < 10 {
      a++
      fmt.Println(a)
   }
}
  • 无限循环

package main
import (
   "fmt"
)
func main() {
   for{
      fmt.Println("abc")
   }
}

五、跳转语句

  • break 与 continue 配合标签可用于多层循环嵌套的跳出

  • goto 是调整执行位置,与其他 2 个语句配合标签的结果并不相同

package main

import (
   "fmt"
)

func main() {
   a := 0
A:
   for a < 10 {
      a++
      fmt.Println(a)
      if a == 5 {
         break A
         goto B
      }
   }
B:
   fmt.Println("B")
}
阅读 1021