Golang-007-循环语句

语法

for init;condition;post{
}

for condition {
}

for {}

  • Go语言的 for 包含初始化语句、条件表达式、结束语句,这 3 个部分均可缺省。
  • for range 支持对数组、切片、字符串、map、通道进行遍历操作。
  • 在需要时,可以使用匿名变量对 for range 的变量进行选取。

示例

  1. 死循环,相当于其他语言的while语句
func main() {
    i := 0
    for {
        if i == 100 {
            break
        }
        fmt.Println("aa",i)
        i++
    }
}
  1. 条件循环,相当于其他语言的dowhile语句
func main() {
    i := 0
    for i < 100{
        fmt.Println("aa",i)
        i++
    }
}
  1. 三元循环,和其他语言for循环一样
func main() {
    for i := 0; i < 100;i++{
        fmt.Println("aa",i)
        i++
    }
}
  1. range循环数组,和其他语言foreach循环一样
func main() {
    strings := []string{"google", "runoob"}
    for i, s := range strings {
        fmt.Println(i, s)
    }


    numbers := [6]int{1, 2, 3, 5}
    for i, x := range numbers {
        fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
    }
}
  1. range循环map
func main() {
    map1 := make(map[int]float32)
    map1[1] = 1.0
    map1[2] = 2.0
    map1[3] = 3.0
    map1[4] = 4.0
   
    // 读取 key 和 value
    for key, value := range map1 {
      fmt.Printf("key is: %d - value is: %f\n", key, value)
    }

    // 读取 key
    for key := range map1 {
      fmt.Printf("key is: %d\n", key)
    }

    // 读取 value
    for _, value := range map1 {
      fmt.Printf("value is: %f\n", value)
    }
}
  1. 嵌套循环和break
func main() {
    for i := 0; i < 100; i++ {
        fmt.Println("i=",i)
        for j := 0; j < 10; j++ {
            fmt.Println("j=",j)
            if j == 5 {
                break //这里只会跳出里面这个for,外层for还会继续执行
            }
        }
    }

   outfor:
    for i := 0; i < 100; i++ {
        fmt.Println("i=",i)
        for j := 0; j < 10; j++ {
            fmt.Println("j=",j)
            if j == 5 {
                break outfor  //在里面跳出外层的for
            }
        }
    }
}
  1. continue, 同6.
func main() {
    for i := 0; i < 100; i++ {
        fmt.Println("i=",i)
        for j := 0; j < 10; j++ {
            fmt.Println("j=",j)
            if j == 5 {
                continue 
            }
        }
    }

   outfor:
    for i := 0; i < 100; i++ {
        fmt.Println("i=",i)
        for j := 0; j < 10; j++ {
            fmt.Println("j=",j)
            if j == 5 {
                continue outfor  //在里面继续外层的for
            }
        }
    }
}

8.goto, 这个语法一般不推荐用,所以不讲解,知道有这个东西就行了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容