go语言中及格比较特殊的switch语法

go语言中几种特殊的switch语法

package main

import (
	"fmt"
)

func main() {

	// go语言中switch的特殊用法
	// 当没有expr的时候,默认是bool类型,并直接定位到true上
	// 即省略 switch后的变量,相当于直接作用在true上
	switch {
	case true:
		fmt.Println("is true")
	case false:
		fmt.Println("si false")
	}

	//	使用省略变量之后只到true上的特性可以实现
	/*
		成绩:
		[0-59],不及格
		[60-79],及格
		[80-89],中
		[90-100],优秀
	*/
	score := 89
	switch {
	case score >= 0 && score < 60:
		fmt.Println("不及格")
	case score >= 60 && score < 70:
		fmt.Println("及格")
	case score >= 70 && score < 80:
		fmt.Println("中")
	case score >= 80 && score < 90:
		fmt.Println("良")
	case score >= 90 && score < 100:
		fmt.Println("优秀")
	default:
		fmt.Println("成绩有误")
	}

	//	支持多种case放到一行上
	letter := ""
	switch letter {
	case "A", "B", "C":
		fmt.Println("case 1")
	case "M", "N":
		fmt.Println("case2")
	default:
		fmt.Println("other")
	}

	//	带有初始化语句
	switch language := "golang"; language {
	case "golang":
		fmt.Println("是go语言")
	case "java":
		fmt.Println("java语言")
	case "python":
		fmt.Println("python语言")
	}

}

Java中的`switch`语句是一种多路分支选择结构,用于根据不同的条件执行不同的代码块。它在语法上类似于`if-else-if`链,但提供了更简洁的写法来处理多个可能的值。 ### 基本语法 ```java switch (expression) { case value1: // 当 expression 等于 value1 时执行的代码 break; case value2: // 当 expression 等于 value2 时执行的代码 break; ... default: // 如果没有匹配的 case,则执行 default 中的代码(可选) } ``` #### 关键点说明: - **expression**:`switch`后面的括号内是一个表达式,其结果必须是以下类型之一: - `byte`、`short`、`int`、`char` - 枚举类型(从 Java 5 开始支持) - `String` 类型(从 JDK 7 开始支持)[^1] - **case**:每个`case`后面跟着一个常量值,该值必须与`switch`表达式的类型兼容,并且不能重复。如果`expression`的结果与某个`case`的值相等,则从该`case`开始执行代码。 - **break**:`break`语句用于终止当前的`case`并跳出整个`switch`结构。如果没有`break`,程序将继续执行下一个`case`或`default`中的代码,这种现象称为“fall-through”行为。[^5] - **default**:`default`是可选的,当没有任何`case`匹配时,将执行`default`中的代码。它可以放在`switch`块的任何位置,但通常建议将其放在最后以提高可读性。 --- ### 示例 下面是一个使用`switch`语句处理字符变量的例子: ```java public class SwitchExample { public static void main(String[] args) { char grade = 'B'; switch (grade) { case 'A': System.out.println("优秀!"); break; case 'B': System.out.println("良好!"); break; case 'C': System.out.println("及格!"); break; case 'D': System.out.println("不及格!"); break; default: System.out.println("未知的成绩等级!"); } } } ``` 在这个例子中,由于`grade`的值为`'B'`,因此输出将是“良好!”。 --- ### 注意事项 - `case`标签后的内容可以包含任意数量的语句,并且不需要用大括号 `{}` 包裹。 - 在同一个`switch`块中,不允许有重复的`case`值。 - 如果省略了`default`部分,并且没有任何`case`匹配,则不会执行任何操作。 - 为了防止意外的“fall-through”,通常需要在每个`case`结束时加上`break`语句。[^4] --- ### JDK 7 及更高版本的新特性 从JDK 7开始,`switch`语句支持使用`String`类型的表达式进行比较,这使得处理字符串输入变得更加直观和方便。例如: ```java String day = "Monday"; switch (day) { case "Monday": System.out.println("星期一"); break; case "Tuesday": System.out.println("星期二"); break; // 其他情况... default: System.out.println("其他天数"); } ``` 此功能在早期版本的Java中不可用,因此如果你正在维护旧项目,请确保你的开发环境支持JDK 7或更高版本。[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Achilles.Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值