栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

第002节:switch分支语句

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第002节:switch分支语句

一、程序的流程结构

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

二、条件语句

switch语句:“开关”

switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

而如果switch没有表达式,它会匹配true

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

switch var1 {    case val1:        ...    case val2:        ...    default:        ...}

示例代码:

package mainimport "fmt"func main() {      var grade string = "B"   var marks int = 90   switch marks {      case 90: grade = "A"      case 80: grade = "B"      case 50,60,70 : grade = "C"  //case 后可以由多个数值      default: grade = "D"     }   switch {      case grade == "A" :         fmt.Printf("优秀!n" )           case grade == "B", grade == "C" :         fmt.Printf("良好n" )            case grade == "D" :         fmt.Printf("及格n" )            case grade == "F":         fmt.Printf("不及格n" )      default:         fmt.Printf("差n" );   }   fmt.Printf("你的等级是 %sn", grade );      }

fallthrough

如需贯通后续的case,就添加fallthrough

package mainimport (    "fmt")type data [2]intfunc main() {    switch x := 5; x {    default:        fmt.Println(x)    case 5:        x += 10        fmt.Println(x)        fallthrough    case 6:        x += 20        fmt.Println(x)    }}

运行结果:

1535

case中的表达式是可选的,可以省略。如果该表达式被省略,则被认为是switch true,并且每个case表达式都被计算为true,并执行相应的代码块。

示例代码:

package mainimport (      "fmt")func main() {      num := 75    switch { // expression is omitted    case num >= 0 && num <= 50:        fmt.Println("num is greater than 0 and less than 50")    case num >= 51 && num <= 100:        fmt.Println("num is greater than 51 and less than 100")    case num >= 101:        fmt.Println("num is greater than 100")    }}

switch的注意事项

    case后的常量值不能重复case后可以有多个常量值fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。

Type Switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。

switch x.(type){    case type:       statement(s);          case type:       statement(s);         default:        statement(s);}
package mainimport "fmt"func main() {   var x interface{}   switch i := x.(type) {      case nil:            fmt.Printf(" x 的类型 :%T",i)                      case int:            fmt.Printf("x 是 int 型")                             case float64:         fmt.Printf("x 是 float64 型")                 case func(int) float64:         fmt.Printf("x 是 func(int) 型")                            case bool, string:         fmt.Printf("x 是 bool 或 string 型" )             default:         fmt.Printf("未知型")        }   }

运行结果:

x 的类型 :
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/793589.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号