您当前的位置:首页 >> 代理 >  >> 
Go语言中的switch语句

时间:2023-08-16 15:30:50    来源:博客园

Go 语言提供了两种主要形式的 switch语句,它们分别有不同的用途和特点。

1. 基于值的 switch

这种形式的 switch语句是基于一个表达式的值来决定执行哪个 case语句块。这与许多其他编程语言中的 switch语句相似。

语法


(资料图片)

switch expression {case value1:    // code to be executed if expression == value1case value2:    // code to be executed if expression == value2case value3, value4:    // code to be executed if expression == value3 or expression == value4default:    // code to be executed if none of the cases are true}

特点

  • 每个 case后面跟的是一个或多个值,当 expression的值等于这些值之一时,该 case语句块会被执行。
  • 不需要使用 break语句结束每个 case。在 Go 中,switch语句默认只执行匹配的 case语句块,然后退出 switch结构。
  • 可以使用逗号分隔多个值,表示多个值中的任何一个都可以匹配。
  • default语句是可选的,当没有 case语句匹配时,会执行 default语句块。

2. 条件式的 switch

这种形式的 switch不基于特定的值,而是基于一组布尔条件。

语法

switch {case condition1:    // code to be executed if condition1 is truecase condition2:    // code to be executed if condition2 is truedefault:    // code to be executed if none of the conditions are true}

特点

  • 不需要主表达式,每个 case后跟的是一个布尔条件。
  • 当布尔条件为 true时,相应的 case语句块会被执行。
  • 同样,不需要使用 break语句。
  • 可以有一个 default语句块,当没有 case语句匹配时,会执行 default语句块。

示例

num := 75switch {case num >= 50 && num < 100:    fmt.Println("num is between 50 and 100")case num < 50:    fmt.Println("num is less than 50")default:    fmt.Println("num is 100 or greater")}

总的来说,基于值的 switch更适用于当你有一个表达式并且想基于它的不同值执行不同的代码块时。而条件式的 switch更适用于当你有多个不相关的条件,并且想基于这些条件的真实性执行不同的代码块时。

Go 语言中的 switch语句的匹配规则如下:

  1. 顺序匹配switch会从上到下评估每个 case,并且只执行第一个匹配的 case语句块。一旦找到匹配的 case,后续的 case就不会再被评估。

  2. 不需要 break:与许多其他编程语言不同,Go 中的 switch语句块在执行完匹配的 case后不会“穿透”到下一个 case。这意味着不需要在每个 case的末尾使用 break语句。但如果你确实想“穿透”到下一个 case,可以使用 fallthrough语句。

  3. 多值匹配:在一个 case语句中,你可以列出多个值(使用逗号分隔),如果表达式的值匹配列表中的任何一个值,该 case语句块都会被执行。

  4. 默认 casedefault是一个特殊的 case,当没有其他 case匹配时,它会被执行。default语句块是可选的,并且在 switch语句中最多只能有一个。

  5. 表达式是可选的:在条件式 switch中,主 switch表达式是可选的。在这种情况下,每个 case后面都跟着一个布尔表达式,而不是值。switch会评估这些布尔表达式并执行第一个为 truecase

  6. 初始化语句:与 if语句类似,switch语句可以包含一个可选的初始化语句,它在评估 switchcase表达式之前执行。

    switch num := 50; {case num < 50:   // some codecase num >= 50:   // some code}
  7. fallthrough语句:如果你想在执行完当前的 case语句块后,继续执行下一个 case语句块,你可以使用 fallthrough语句。但要注意,fallthrough不会再次评估下一个 case的条件,而是直接执行。

上述规则为你提供了使用 Go 语言 switch语句的灵活性和控制能力,使其成为一个非常强大的控制结构。

标签:

热门推荐

X 关闭

X 关闭