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

示例1:
package main

import "fmt"

func main() {
num := 3 switch num {
case 1:
fmt.Println("按下的是1楼")
case 2:
fmt.Println("按下的是2楼")
case 3:
fmt.Println("按下的是3楼")
case 4:
fmt.Println("按下的是4楼")
}
}

#执行结果

按下的是3楼

  

示例2:

package main

import "fmt"

func main() {
num := 5 switch num {
case 1:
fmt.Println("按下的是1楼")
//break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。
case 2:
fmt.Println("按下的是2楼")
case 3:
fmt.Println("按下的是3楼")
case 4:
fmt.Println("按下的是4楼")
default:
fmt.Println("按下的是xxx楼")
}
}

#执行结果

按下的是xxx楼

示例3: 需要输入按下的楼层

package main

import "fmt"

func main() {
var num int
fmt.Printf("请按下楼层:")
fmt.Scan(&num) switch num {
case 1:
fmt.Println("按下的是1楼")
case 2:
fmt.Println("按下的是2楼")
case 3:
fmt.Println("按下的是3楼")
case 4:
fmt.Println("按下的是4楼")
default:
fmt.Println("按下的是xxx楼")
}
}

#执行结果:

请按下楼层:2   #输入2
按下的是2楼

用途:fallthrough //不跳出switch语句,后面的无条件执行

示例4:

package main

import "fmt"

func main() {
var num int
fmt.Printf("请按下楼层:")
fmt.Scan(&num) switch num {
case 1:
fmt.Println("按下的是1楼")
fallthrough //不跳出switch语句,后面的无条件执行
case 2:
fmt.Println("按下的是2楼")
fallthrough
case 3:
fmt.Println("按下的是3楼")
fallthrough
case 4:
fmt.Println("按下的是4楼")
fallthrough
default:
fmt.Println("按下的是xxx楼")
}
}

#执行结果

请按下楼层:1
按下的是1楼
按下的是2楼
按下的是3楼
按下的是4楼
按下的是xxx楼

 

示例5: (推荐用法)

package main

import "fmt"

func main() {

	switch num := 1; num {
case 1:
fmt.Println("按下的是1楼")
case 2:
fmt.Println("按下的是2楼")
case 3:
fmt.Println("按下的是3楼")
case 4:
fmt.Println("按下的是4楼")
default:
fmt.Println("按下的是xxx楼")
}
}

#执行结果:

按下的是1楼

 

示例6:  case 后面接数字,可以写多个

package main //必须有一个main包

import "fmt"

func main() {
//支持一个初始化语句, 初始化语句和变量本身, 以分号分隔
switch num := 4; num { //switch后面写的是变量本身
case 1:
fmt.Println("按下的是1楼") case 2:
fmt.Println("按下的是2楼") case 3, 4, 5:
fmt.Println("按下的是yyy楼") case 6:
fmt.Println("按下的是4楼") default:
fmt.Println("按下的是xxx楼")
}
}

#执行结果:

按下的是yyy楼

  

示例7:

package main

import "fmt"

func main() {
score := 85
switch {
case score > 90: //case后面可以放条件
fmt.Println("优秀")
case score > 80:
fmt.Println("良好")
case score > 70:
fmt.Println("一般")
default:
fmt.Println("其它")
}
}

#执行结果:

良好

 

												

最新文章

  1. Kafka:主要参数详解(转)
  2. c#日期格式化
  3. How to throw an error in MySql procedure?
  4. codeforces 476B.Dreamoon and WiFi 解题报告
  5. jquery.qrcode.js生成二维码
  6. Yii2 composer更新后报错: Calling unknown method: yii\web\UrlManager::addRules()
  7. 开源入侵检测系统OSSEC搭建之二:客户端安装
  8. Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
  9. linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法
  10. 使用java的Calendar对象获得当前日期的上几个度开始、结束时间
  11. N皇后问题--递归回溯
  12. UT源码-124
  13. 学习笔记:javascript内置对象:日期对象
  14. 洛谷 [p2294] [HNOI2005] 狡猾的商人
  15. 2015 多校联赛 ——HDU5305(搜索)
  16. git命令行常用几个指令(细节问题)
  17. Uncaught TypeError: Cannot read property ‘split’ of undefined
  18. VS2015环境下生成和调用DLL动态链接库
  19. C#修饰符详解
  20. Oracle Database(rdbms) 12.2 安装组件

热门文章

  1. 趴一趴京东的Ajax动态价格页面
  2. [BZOJ4444][SCOI2015]国旗计划(倍增)
  3. 【20181026T2】**图【最小瓶颈路+非旋Treap+启发式合并】
  4. [MVC4]Data Annotations Extensions:无法使用EmailAddress等验证特性的解决方法
  5. [转]android中OnTouch和OnClick、 imagebutton的src和background有什么区别
  6. 51nod 1010 只包含因子2 3 5的数 打表
  7. IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing 暴力
  8. PAT甲级1016. Phone Bills
  9. js实现大转盘抽奖游戏实例
  10. SDRAM interface slashes pin count