switch中的default

本文围绕switch case语句中的default语句展开。介绍了default在case匹配失败时执行,若case匹配成功但缺break也可能执行。还探讨了default位置对结果的影响,取决于是否用break。同时指出default非必需,但从代码规范看,最好添加,可参考阿里代码规范插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

default什么时候会执行?default的位置对执行结果有影响吗?

default只有在case匹配失败的时候才会执行

  1.         int a=4;
  2. switch (a){
  3. case 1:
  4. System.out.println("1");
  5. break;
  6. case 2:
  7. System.out.println("2");
  8. break;
  9. case 3:
  10. System.out.println("3");
  11. break;
  12. default:
  13. System.out.println("default");
  14. break;
  15. }

打印结果:default

当然也有特殊情况,就是case匹配成功了,但缺少了break语句

  1. int a=3;
  2. switch (a){
  3. case 1:
  4. System.out.println("1");
  5. break;
  6. case 2:
  7. System.out.println("2");
  8. break;
  9. case 3:
  10. System.out.println("3");
  11. default:
  12. System.out.println("default");
  13. break;
  14. }

打印结果:

3

default

default的位置对执行结果有没有影响,关键看default有没有使用break,先看有break的情况下是什么结果

  1. int a=4;
  2. switch (a){
  3. default:
  4. System.out.println("default");
  5. break;
  6. case 1:
  7. System.out.println("1");
  8. break;
  9. case 2:
  10. System.out.println("2");
  11. break;
  12. case 3:
  13. System.out.println("3");
  14. break;
  15. }

打印结果:default

接下来看看不加break是什么结果

  1. int a=4;
  2. switch (a){
  3. default:
  4. System.out.println("default");
  5. case 1:
  6. System.out.println("1");
  7. case 2:
  8. System.out.println("2");
  9. break;
  10. case 3:
  11. System.out.println("3");
  12. break;
  13. }

打印结果:

default
1

2

可以看到不加break的话会继续向下执行,直到遇到break或return或switch结束为止

 

 

default语句不是必须的。   switch case 语句是一个条件选择语句,找到相同的case值做为入口,执行后面的程序;若所有的case都不满足,则找default入口;若未找到则退出整个switch语句。  所以default只是一个备用的入口,有没有都无所谓。 但是对于规范代码来说最好在后面加一个default,参考阿里巴巴的代码规范插件!

### Go语言中 `switch` 语句的 `default` 用法 在 Go 语言中,`switch` 语句用于实现多路分支逻辑。当没有任何一个 `case` 条件满足时,可以选择执行 `default` 分支。值得注意的是,默认分支的位置并不固定,它可以放置在任意位置,甚至可以在所有 `case` 前面[^3]。 以下是关于 `default` 的具体用法及其示例: #### 示例代码 ```go package main import "fmt" func main() { value := 5 switch value { case 1, 2, 3: fmt.Println("Value is between 1 and 3") case 4: fmt.Println("Value is exactly 4") default: fmt.Println("Value does not match any of the cases above") } } ``` 在这个例子中,变量 `value` 被设置为 `5`。由于没有匹配到任何 `case` 中定义的情况,因此程序会进入 `default` 分支并打印 `"Value does not match any of the cases above"`。 需要注意的一点是,即使 `default` 放置在其他 `case` 的前面,它仍然会在所有条件都不成立的情况下被触发。例如: #### 默认分支前置的例子 ```go package main import "fmt" func main() { day := "Monday" switch day { default: fmt.Println("Not a weekend.") case "Saturday", "Sunday": fmt.Println("It's a weekend!") } } ``` 在此代码片段中,尽管 `default` 出现在第一个位置,但由于变量 `day` 设置为 `"Monday"` 并不等于 `"Saturday"` 或者 `"Sunday"`,所以最终还是输出了默认的消息 `"Not a weekend."`。 另外,在某些特殊场景下可能需要用到 `fallthrough` 关键字来强制跳转至下一个 `case` 执行,但这不会影响到 `default` 的行为模式[^4]。 ### 总结 综上所述,`default` 在 Go 的 `switch` 结构里扮演着兜底的角色,无论它的实际物理顺序如何排列,只要所有的 `case` 都未能成功匹配,则必然会选择运行该部分逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值