zoukankan      html  css  js  c++  java
  • Go

    概述

    前几篇文章分享了 array 数组、slice 切片、map 集合,这篇文章分享如何循环获取里面的元素,同时也是对前几篇文章的复习。

    本篇文章会用到的关键字 for、range、break、continue、goto、switch。
    循环 array

     

      //demo_18.go    
        package main    
        import (    
            "fmt"    
        )    
        func main() {    
            person := [3] string {"Tom", "Aaron", "John"}    
            fmt.Printf("len=%d cap=%d array=%v
    ", len(person), cap(person), person)    
            fmt.Println("")    
            //循环    
            for k, v := range person {    
                fmt.Printf("person[%d]: %s
    ", k, v)    
            }    
            fmt.Println("")    
            for i := range person {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            for i := 0; i < len(person); i++ {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            //使用空白符    
            for _, name := range person {    
                fmt.Println("name :", name)    
            }    
        }
    



    运行结果:


    循环 slice

       

    //demo_19.go    
        package main    
        import (    
            "fmt"    
        )    
        func main() {    
            person := [] string {"Tom", "Aaron", "John"}    
            fmt.Printf("len=%d cap=%d slice=%v
    ", len(person), cap(person), person)    
            fmt.Println("")    
            //循环    
            for k, v := range person {    
                fmt.Printf("person[%d]: %s
    ", k, v)    
            }    
            fmt.Println("")    
            for i := range person {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            for i := 0; i < len(person); i++ {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            //使用空白符    
            for _, name := range person {    
                fmt.Println("name :", name)    
            }    
        }
    



    运行结果:

    循环 map

      

     //demo_20.go    
        package main    
        import (    
            "fmt"    
        )    
        func main() {    
            person := map[int]string{    
                1 : "Tom",    
                2 : "Aaron",    
                3 : "John",    
            }    
            fmt.Printf("len=%d map=%v
    ", len(person), person)    
            fmt.Println("")    
            //循环    
            for k, v := range person {    
                fmt.Printf("person[%d]: %s
    ", k, v)    
            }    
            fmt.Println("")    
            for i := range person {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            for i := 1; i <= len(person); i++ {    
                fmt.Printf("person[%d]: %s
    ", i, person[i])    
            }    
            fmt.Println("")    
            //使用空白符    
            for _, name := range person {    
                fmt.Println("name :", name)    
            }    
        }
    


    运行结果:

    break

    跳出当前循环,可⽤于 for、switch、select。

     

      //demo_21.go    
        package main    
        import "fmt"    
        func main() {    
            for i := 1; i <= 10; i++ {    
                if i == 6 {    
                    break    
                }    
                fmt.Println("i =", i)    
            }    
        }
    



    运行结果:

    continue

    跳过本次循环,只能用于 for。

     

       //demo_22.go    
        package main    
        import "fmt"    
        func main() {    
            for i := 1; i <= 10; i++ {    
                if i == 6 {    
                    continue    
                }    
                fmt.Println("i =", i)    
            }    
        }
    


    运行结果:

    goto

    改变函数内代码执行顺序,不能跨函数使用。

     

      //demo_23.go    
        package main    
        import "fmt"    
        func main() {    
            fmt.Println("begin")    
            for i := 1; i <= 10; i++ {    
                if i == 6 {    
                    goto END    
                }    
                fmt.Println("i =", i)    
            }    
            END :    
                fmt.Println("end")    
        }
    


    运行结果:

    switch

      

     //demo_24.go    
        package main    
        import "fmt"    
        func main() {    
            i := 1    
            fmt.Printf("当 i = %d 时:
    ", i)    
            switch i {    
                case 1:    
                    fmt.Println("输出 i =", 1)    
                case 2:    
                    fmt.Println("输出 i =", 2)    
                case 3:    
                    fmt.Println("输出 i =", 3)    
                    fallthrough    
                case 4,5,6:    
                    fmt.Println("输出 i =", "4 or 5 or 6")    
                default:    
                    fmt.Println("输出 i =", "xxx")    
            }    
        }
    


    运行结果:

    当 i = 1 时:输出 i = 1

    当 i = 2 时:输出 i = 2

    当 i = 3 时:

        输出 i = 3

        输出 i = 4 or 5 or 6

    当 i = 4 时:输出 i = 4 or 5 or 6

    当 i = 7 时:输出 i = xxx

    结论:

        默认每个 case 带有 break

        case 中可以有多个选项

        fallthrough 不跳出,并执行下一个 case

  • 相关阅读:
    讨论: TDD in HTML & JavaScript 之可行性和最佳实践
    Enterprise Caching Summary
    NIntegrate SOA Practice – EAppointments Sample Application
    This is jqMVC# Definition & Summary
    LRU Caching Practice
    NIntegrate v0.9.0.1 released
    CrossDomain AJAX Enabled WCF Service
    突然发现想在博客园发起一个有价值的讨论其实很难
    Discuss some new features in WCF 4.0
    This is jqMVC# – CNBLOGS Google Tracer Sample
  • 原文地址:https://www.cnblogs.com/it-3327/p/11869858.html
Copyright © 2011-2022 走看看