美文网首页
Golang学习笔记-条件语句,循环语句

Golang学习笔记-条件语句,循环语句

作者: 土豆吞噬者 | 来源:发表于2019-09-27 19:01 被阅读0次

    Go的条件语句,循环语句和C很像,不同的是Go的条件表达式可以不用括号扩起来,除此之外还有这些不同:

    switch语句

    switch分支中的代码执行完后会跳出switch代码块,如果我们需要执行后面的 case,可以使用fallthrough。

    func main() {
        a:=1
        switch a {
        case 0:
            fmt.Println("a is 0")
        case 1:
            fmt.Println("a is 1")
            fallthrough
        case 2:
            fmt.Println("a is 2")
        }
    }
    

    结果:

    a is 1
    a is 2
    

    switch支持任何类型的判断,例如下面的string:

    func main() {
        var fruitName="apple"
        switch fruitName {
        case "apple":
            fmt.Println("苹果")
        case "banana","orange":
            fmt.Println("香蕉或橙子")
        }
    }
    
    

    switch的另一种形式是不提供任何被判断的值,然后在每个 case 分支中进行测试不同的条件,当任一分支的测试结果为 true 时,该分支的代码会被执行,这比链式的 if-else 语句可读性更好。

    func main() {
        value:=65
        switch {
        case value>80:
            fmt.Println("优秀")
        case value>60:
            fmt.Println("及格")
        default:
            fmt.Println("不及格")
        }
    }
    

    使用 type-switch可以判断某个interface变量中实际存储的变量类型。

    func main() {
        var value interface{}
    
        switch value.(type) {
        case nil:
            fmt.Printf("t is nil")
        case int:
            fmt.Printf("t is int")
        case float64:
            fmt.Printf("t is float64")
        case func(int) float64:
            fmt.Printf("t is func(int)")
        case bool, string:
            fmt.Printf("t is bool or string" )
        default:
            fmt.Printf("t is unknow type")
        }
    }
    

    for循环语句

    Go没有while语句,所有循环都用关键字for:

    普通for循环和C一样:

    func main() {
        for i:=0;i<10;i++{
            fmt.Println(i)
        }
    }
    

    和C的while循环一样:

    func main() {
        n:=0
        for n<10{
            fmt.Println(n)
            n++
        }
    }
    

    和C的for(;; ) 一样:

    func main() {
        n:=0
        for {
            if n>9{
                break
            }
            fmt.Println(n)
            n++
        }
    }
    

    for range 循环可以对 slice、map、数组、字符串等进行迭代循环:

    func main() {
        str:="hello"
        for i,c:=range str{
            fmt.Println(i,c)
        }
        fruitMap := map[string]int{"apple": 1, "banana": 2, "orange": 3}
        for key,value:=range fruitMap{
            fmt.Println(key,value)
        }
    }
    

    结果:

    0 104
    1 101
    2 108
    3 108
    4 111
    apple 1
    banana 2
    orange 3
    

    相关文章

      网友评论

          本文标题:Golang学习笔记-条件语句,循环语句

          本文链接:https://www.haomeiwen.com/subject/mfkoectx.html