Skip to content

for 循环

任何编程语言,都会有 for 循环,它的一般写法是

go
for 初始化;条件;操作{
}

例如求 1+2+...+100 的和

go
package main

import "fmt"

func main() {

  var sum = 0
  for i := 0; i <= 100; i++ {
    sum += i
  }
  fmt.Println(sum)
}

for 循环的五种变体

传统 for 循环

如上

死循环

每隔 1 秒打印当前的时间

go
package main

import (
  "fmt"
  "time"
)

func main() {

  for {
    time.Sleep(1 * time.Second)
    fmt.Println(time.Now().Format("2006-01-02 15:04:05")) // 年月日时分秒的固定格式
  }
}

while 模式

由于 golang 没有 while 循环,如果需要,则是由 for 循环稍微变化得来

go
package main

import "fmt"

func main() {

  i := 0
  sum := 0
  for i <= 100 {
    sum += i
    i++
  }
  fmt.Println(sum)
}

do-while 模式

do-while 模式就是先执行一次循环体,再判断

go
package main

import "fmt"

func main() {

  i := 0
  sum := 0
  for {
    sum += i
    i++
    if i == 101 {
      break
    }
  }
  fmt.Println(sum)
}

遍历切片,map

遍历切片

第一个参数是索引,第二个参数是

go
package main

import "fmt"

func main() {

  s := []string{"枫枫", "知道"}
  for index, s2 := range s {
    fmt.Println(index, s2)
  }
}

遍历 map

第一个参数就是 key,第二个就是 value

go
package main

import "fmt"

func main() {

  s := map[string]int{
    "age":   24,
    "price": 1000,
  }
  for key, val := range s {
    fmt.Println(key, val)
  }
}

break,continue

break 用于跳出当前循环

continue 用于跳过本轮循环

例如打印九九乘法表

go
package main

import "fmt"

func main() {

  for i := 1; i <= 9; i++ {
    for j := 1; j <= i; j++ {
      fmt.Printf("%d * %d = %d\t", i, j, i*j)
    }
    fmt.Println()
  }
}

除了这样写,还能这样写

go
package main

import "fmt"

func main() {

  for i := 1; i <= 9; i++ {
    for j := 1; j <= 9; j++ {
      if j > i {
        // 去掉 列比行大的数据
        continue
      }
      fmt.Printf("%d * %d = %d\t", i, j, i*j)
    }
    fmt.Println()
  }
}