代码可随意使用或转贴,但请注明出处
GitLab:https://gitlab.com/whitefloor40567/golangnote
最近在整理基础教学相关的code,没想到这些也是有点负担的工作
打一些短短的程式码就需要注意到的东西真的很多
GitLab上的结构有些变动,之前有使用过的朋友记得重新pull
那今天我们就来介绍switch
package exampleimport ("fmt""log""math/rand""time")// AboutSwitchFirst ...func AboutSwitchFirst() {num := getContent()//此处可以写成 switch num := getContent();num{} 与if可以在判断中进行宣告是一样的switch num {case 0:log.Println("A")//case内自带break方法,执行完就会跳出switchcase 1:log.Println("B")case 2:log.Println("C")case 3:log.Println("D")default: //default:当前面条件都没有满足时将会执行此处内包含的方法fmt.Println(num)}}// AboutSwitchSecond ...func AboutSwitchSecond() {switch num := getContent(); num {case 0:log.Println("A")fallthrough //fallthrough:意思是当进入执行且执行完case 0 时,会接着执行下一个case的方法case 1:log.Println("B")fallthroughcase 2:log.Println("C")fallthroughcase 3, 4: //case可以有多个表达式,此处意思为num = 3 or 4 就会进入log.Println("D")fallthroughdefault:fmt.Println(num)//switch的最后一个case不能放入fallthrough}}// AboutSwitchThird ...func AboutSwitchThird() {num := getContent()// switch也可以不放入任何的type,以条件进行判断switch {case num <= 2:log.Println("A")case num > 2:log.Println("B")default: //default:当前面条件都没有满足时将会执行此处内包含的方法fmt.Println(num)}}// 注意:还有一种针对interface使用判断interface所回传的type,但较为深入,放在interface后再进行解说// 小写开头的func只能在该package呼叫,好处是其他package无法使用,能够隐藏细节进行封装func getContent() int {//rand的使用方法请看官方文件,此处重点为switchrand.Seed(time.Now().UnixNano())num := rand.Intn(4)// 如果宣告的回传值为匿名,那回传时一定要赋予变数名称return num}