zoukankan      html  css  js  c++  java
  • 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正确的分支开始其作用。

  • 相关阅读:
    开发中常用js记录(二)
    c# 我所理解的 值类型 and 引用类型
    c# 枚举
    ModelState.IsValid总为false原因
    学习总结 之 WebApi服务监控 log4net记录监控日志
    How to Deinstall Oracle Clusterware Home Manually
    oracle client 低于 oracle server 端,导致报错ORA-01882
    转 zabbix 用户建立和中文化
    转 rman 恢复报错
    10g 升级到11g 失效对象2则
  • 原文地址:https://www.cnblogs.com/zsy/p/6741902.html
Copyright © 2011-2022 走看看