文章目录
- package main import “fmt” func main() { day := 3 switch day { case 1: fmt.Println(“星期一”) case 2: fmt.Println(“星期二”) case 3: fmt.Println(“星期三”) case 4: fmt.Println(“星期四”) case 5: fmt.Println(“星期五”) case 6: fmt.Println(“星期六”) case 7: fmt.Println(“星期日”) default: fmt.Println(“无效的天数”) } }
- 在 Go 中,switch 后面的表达式可以省略,此时相当于 switch true,常用于替代多个 if-else 语句。 package main import “fmt” func main() { num := 5 switch { case num < 0: fmt.Println(“负数”) case num == 0: fmt.Println(“零”) case num > 0 && num < 10: fmt.Println(“正数且小于 10”) case num >= 10: fmt.Println(“正数且大于或等于 10”) default: fmt.Println(“不可能的情况”) } }
- 可以为一个 case 指定多个匹配值,值之间用逗号分隔。 package main import “fmt” func main() { grade := ‘B’ switch grade { case ‘A’, ‘B’, ‘C’: fmt.Println(“成绩良好”) case ‘D’: fmt.Println(“成绩及格”) case ‘E’, ‘F’: fmt.Println(“成绩不及格”) default: fmt.Println(“无效的成绩等级”) } }
- switch 还可以用于判断变量的类型,这在处理接口类型时非常有用。 package main import “fmt” func main() { var value interface{} = “Hello, Go!” switch v := value.(type) { case int: fmt.Printf(“整数: %dn”, v) case string: fmt.Printf(“字符串: %sn”, v) case bool: fmt.Printf(“布尔值: %vn”, v) case nil: fmt.Println(“空值”) default: fmt.Printf(“未知类型: %Tn”, v) } }
目录
- 基本语法
- 示例代码
- 1. 基本的switch语句
- 2.不带表达式的switch
- 3. 多值匹配
- 4. 类型判断
- 注意事项
- 输出
- 说明
- 注意事项
在 Go 语言中,switch 语句提供了一种根据表达式的值执行不同代码块的机制。它比多个 if-else 语句更清晰、更易于维护,尤其适用于多路分支的情况。
switch expression {
case value1:
// 表达式等于 value1 时执行的代码块
case value2:
// 表达式等于 value2 时执行的代码块
...
default:
// 以上条件都不满足时执行的代码块(可选)
}
以下是一些 switch 语句的常见用法示例:
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
default:
fmt.Println("无效的天数")
}
}
在 Go 中,switch 后面的表达式可以省略,此时相当于 switch true,常用于替代多个 if-else 语句。
package main
import "fmt"
func main() {
num := 5
switch {
case num < 0:
fmt.Println("负数")
case num == 0:
fmt.Println("零")
case num > 0 && num < 10:
fmt.Println("正数且小于 10")
case num >= 10:
fmt.Println("正数且大于或等于 10")
default:
fmt.Println("不可能的情况")
}
}
可以为一个 case 指定多个匹配值,值之间用逗号分隔。
package main
import "fmt"
func main() {
grade := 'B'
switch grade {
case 'A', 'B', 'C':
fmt.Println("成绩良好")
case 'D':
fmt.Println("成绩及格")
case 'E', 'F':
fmt.Println("成绩不及格")
default:
fmt.Println("无效的成绩等级")
}
}
switch 还可以用于判断变量的类型,这在处理接口类型时非常有用。
package main
import "fmt"
func main() {
var value interface{} = "Hello, Go!"
switch v := value.(type) {
case int:
fmt.Printf("整数: %dn", v)
case string:
fmt.Printf("字符串: %sn", v)
case bool:
fmt.Printf("布尔值: %vn", v)
case nil:
fmt.Println("空值")
default:
fmt.Printf("未知类型: %Tn", v)
}
}
- 自动跳转:Go 语言的 switch 语句不会自动从一个 case 跳转到下一个 case,每个 case 的代码块执行完成后会自动退出 switch 语句。
- default 子句:default 子句是可选的,用于处理所有不匹配的情况。
- 变量声明:可以在 switch 语句中声明变量。
希望这些示例能帮助你更好地理解和使用 Go 语言中的 switch 语句。
你希望在匹配某个 case 后,继续执行下一个 case 的代码块,而不是退出 switch 语句。这时就可以使用 fallthrough。
以下是一个使用 fallthrough 的示例:
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("今天是星期一")
fallthrough
case 2:
fmt.Println("明天是星期二")
fallthrough
case 3:
fmt.Println("后天是星期三")
fallthrough
case 4:
fmt.Println("大后天是星期四")
fallthrough
case 5:
fmt.Println("再后天是星期五")
fallthrough
case 6:
fmt.Println("又是星期六了")
fallthrough
case 7:
fmt.Println("星期日到了")
default:
fmt.Println("无效的天数")
}
}
今天是星期一
明天是星期二
后天是星期三
大后天是星期四
再后天是星期五
又是星期六了
星期日到了
今天是星期一
明天是星期二
后天是星期三
大后天是星期四
再后天是星期五
又是星期六了
星期日到了
- fallthrough 的作用:在每个 case 的末尾使用 fallthrough,可以让程序继续执行下一个 case 的代码,即使下一个 case 的条件不匹配。
- 执行流程:当 day 的值为 3 时,程序匹配到 case 3,并执行 fmt.Println("后天是星期三"),然后 fallthrough 使程序继续执行 case 4 的代码,依此类推。
- default 子句:如果 day 的值超出了 1 到 7 的范围,程序将执行 default 子句中的代码。
- 显式意图:fallthrough 需要显式地写在 case 代码块的末尾,不能省略。
- 谨慎使用:虽然 fallthrough 提供了额外的控制流程,但过度使用可能会使代码难以理解,应根据实际需求谨慎使用。
到此这篇关于golang switch的语法使用小结的文章就介绍到这了,更多相关golang switch内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Golang switch语句的具体使用
- golang中一种不常见的switch语句写法示例详解
- golang如何用type-switch判断interface变量的实际存储类型
- golang switch语句的灵活写法介绍
- Golang中switch语句和select语句的用法教程