• go语言fallthrough的用法心得


    fallthrough:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

    示例程序1:

    switch {
        case false:
            fmt.Println("The integer was <= 4")
            fallthrough
        case true:
            fmt.Println("The integer was <= 5")
            fallthrough
        case false:
            fmt.Println("The integer was <= 6")
            fallthrough
        case true:
            fmt.Println("The integer was <= 7")
            fallthrough
        case false:
            fmt.Println("The integer was <= 8")
        default:
            fmt.Println("default case")
        }

    输出结果:

    The integer was <= 5
    The integer was <= 6
    The integer was <= 7
    The integer was <= 8

    问题:是否在switch最后一个分支使用fallthrough???

    image

    有错误提示,显示:cannot fallthrough final case in switch

    fallthrough不能用在switch的最后一个分支。

    示例程序2:

    上述示例是true、false常量进行分支判断,看如下变量示例。

    s := "abcd"
        switch s[1] {
        case 'a':
            fmt.Println("The integer was <= 4")
            fallthrough
        case 'b':
            fmt.Println("The integer was <= 5")
            fallthrough
        case 'c':
            fmt.Println("The integer was <= 6")
        default:
            fmt.Println("default case")
        }

    输出结果如下:

    The integer was <= 5
    The integer was <= 6

    更改为:

    s := "abcd"
        switch s[3] {
        case 'a':
            fmt.Println("The integer was <= 4")
            fallthrough
        case 'b':
            fmt.Println("The integer was <= 5")
            fallthrough
        case 'c':
            fmt.Println("The integer was <= 6")
        default:
            fmt.Println("default case")
        }

    输出:

    default case

    总结:switch分支中使用变量进行判断的时,fallthrough正确的分支开始其作用。

  • 相关阅读:
    重温.NET Remoting(四)
    asp.net mvc3的变态错误
    绝对定位与相对低位的应用
    Tsql script for Job
    Entlib5.0之数据查询
    Jquery Mobile dialog的生命周期
    关于委托Lamda表达式等的一个小例子
    网上摘录 数据分组处理
    Oracle 要点摘录
    [原創]另一種思路固定URL及.NET實現
  • 原文地址:https://www.cnblogs.com/zsy/p/6741902.html
Copyright © 2020-2023  润新知