[Day 11] -『 GO语言学习笔记』- switch 叙述

以下笔记摘录自『 The Go Workshop 』。

如果遇到需要一大堆if叙述才能处理的状况,就可以引用Go语言里的另一种条件判断叙述:Switch。

Switch语法介绍

switch <起始赋值叙述>; <运算式> {
case <运算式> :
    <程序叙述>
case <运算式>, <运算式>:
    <程序叙述>
    fallthrough
...
default:
    <程序叙述>

与if叙述只能使用布林运算式不同,Switch运算式回传值可以是非布林值。

  1. 上述的起始赋值叙述/运算式都是非必要,可以只写其中一个(switch <起始赋值叙述>switch <运算式>),也可以两个都不写。如果没有写运算式,效果就跟写成switch true一样。

  2. case用来检查要执行的条件,运算式有两种写法,可以写成像if叙述的布林运算式,或者直接写一个值,这个值会跟swith自身运算式的值做比较。

  3. 後面的程序叙述跟if程序区很像,但不需要用大括号。

  4. Go语言会一由上至下的顺序检查各个case得值或运算式,只要找的一个检查通过的case,Go语言就会只执行它对应的程序叙述并离开switch,这点与许多其他语言的switch不太一样。

  5. 使用fallthrough则可以让Go语言执行到该行後继续往下检查下一个case的条件。

  6. default叙述作用同if叙述中的else,当所有case的运算式都不成立或值不符合时,就会执行它。

For example

package main

import (
	"fmt"
	"time"
)

func main() {
	day := time.Monday
	switch day {
	case time.Monday:
		fmt.Println("星期一,猴子穿新衣")
	case time.Tuesday:
		fmt.Println("星期二,猴子肚子饿")
	case time.Wednesday:
		fmt.Println("星期三,猴子去爬山")
	case time.Thursday:
		fmt.Println("星期四,猴子去考试")
	case time.Friday:
		fmt.Println("星期五,猴子去跳舞")
	case time.Saturday:
		fmt.Println("星期六,猴子去斗六")
	case time.Sunday:
		fmt.Println("星期日,猴子过生日")
	default:
		fmt.Println("日期不正确")
	}
}

//output
星期一,猴子穿新衣


<<:  英雄列表范例:删除英雄

>>:  Day 25 Azure machine learning: Pipeline for data- 建立工作流程来收集资料

[Day1] Reactive Programming 简介与前言

Reactive Programming 序 两年前在JCConf 2019,欣赏了Josh Lon...

Day 8. Hashicorp Nomad: Application Logs

Hashicorp Nomad: Application Logs AP log又多又杂,相信大部分...

Day 17 : 案例分享(5.3) CRM与ERP整合 - 商机与报价 及相关整合介绍

案例说明及适用场景 每一个商机都有公司对他的期望值(金额) 商机不论成功或失败与否,长期的记录,能有...

WPA 使用 RC4 作为保密的底层密码(WPA uses RC4 as the underlying cipher for confidentiality)

.RC4 在 WEP 中用於强制保密。然而,“在 2001 年 8 月,Scott Fluhrer、...