iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Software Development

關於我轉生變成 Go 初學者的這檔事系列 第 21

Day20-[第十九站 : Go Switch ? 要玩遊戲 ?(二)]<GOO~

  • 分享至 

  • xImage
  •  

前言

既然上一站已經說明了 Switch 的用法,那這一站就來說明 Go Switch 的其他優點

開始

在開始之前我還是想先說一下,上一站一定會有人有疑問,那如果我今天輸入的值,剛好都沒有以下 case 可以對應的結果,那會怎麼樣呢? 這邊直接用程式碼顯示

package main
import ("fmt")

func main() {
  day := 8

  switch day {
  case 1:
    fmt.Println("Monday")
  case 2:
    fmt.Println("Tuesday")
  case 3:
    fmt.Println("Wednesday")
  case 4:
    fmt.Println("Thursday")
  case 5:
    fmt.Println("Friday")
  case 6:
    fmt.Println("Saturday")
  case 7:
    fmt.Println("Sunday")
  }
}

結果顯示

沒錯,如你所見沒有東西,這是因為我們沒有給它一個類似 else 的東西,那當然 Switch 有這種東西,名為 "default",修改後會變成這樣

package main
import ("fmt")

func main() {
  day := 8

  switch day {
  case 1:
    fmt.Println("Monday")
  case 2:
    fmt.Println("Tuesday")
  case 3:
    fmt.Println("Wednesday")
  case 4:
    fmt.Println("Thursday")
  case 5:
    fmt.Println("Friday")
  case 6:
    fmt.Println("Saturday")
  case 7:
    fmt.Println("Sunday")
  default:
    fmt.Println("Error")
  }
}

輸出結果

我記得上一站好像有,但是我發現我沒有跟大家講解,所以怕大家有疑問這裡跟大家講解一下,那我們繼續 Go Switch 的優點

Go Switch 優點與特色

  • 可用於判斷任意可比較的值,包括 int、str、bool 等,C 和 Java 的 Switch 語句只能用於判斷整數、字符串
  • 可以使用逗號將多個 case 條件分隔開來,並且可以使用 fallthrough 語句使程序繼續執行下一個 case 分支,C 的 Switch 語句只能使用單個 case 條件,並且不允許使用 fallthrough 語句。Java 的 Switch 語句可以使用逗號將多個 case 條件分隔開來,但不允許使用 fallthrough 語句
  • 可以使用 := 語句在 Switch 語句中初始化變量,C 和 Java 的 Switch 語句不能在 Switch 語句中初始化變量
  • Go Switch 的特色就是可以多個情況發生但是可以印出相同結果

Go Switch 多個情況的寫法

當 Go Switch 有多個情況發生,它可以這麼寫

package main
import ("fmt")

func main() {
   day := 4

   switch day {
   case 1,3,5:
    fmt.Println("Odd weekday")
   case 2,4:
     fmt.Println("Even weekday")
   case 6,7:
    fmt.Println("Weekend")
  default:
    fmt.Println("Invalid day of day number")
  }
}

雖然說其他的程式語言也有這種類似的寫法,但是我覺得 Go 的寫法算是滿好理解的,總而言之我覺得 Go 的 Switch 語句更靈活、更強大!

結語&預告

跟大家分享完了 Go 語法的 Switch 希望大家可以有所收穫,雖然我可能講的不是很完整或是有些地方可能說錯了,那我也希望大師或是前輩可以多多鞭策我,然後跟我一樣是菜鳥的同學也歡迎跟我一起討論~

下一站~ Go 陣列的迷途森林

資料來源

Go Multi-case switch
https://www.w3schools.com/go/go_switch_multi.php


上一篇
Day20-[第十九站 : Go Switch ? 要玩遊戲 ?(一)]<GOO~
下一篇
Day22-[第二十一站 : Go 陣列的迷途森林]<GOO~
系列文
關於我轉生變成 Go 初學者的這檔事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言