GO

GO — سوئیچ (Switch)

آخرین بروزرسانی: 1404/08/14

سوئیچ (Switch)

وقتی چند حالت داری، از «سوئیچ (Switch)» استفاده کن. یعنی بر اساس مقدار، یکی از چند بلوک اجرا می شود. مثل انتخاب کلاس بر اساس شماره.

سینتکس سوئیچ

در Go، فقط case مطابق اجرا می شود. پس به break نیاز نیست.

switch expr {
  case x:
    // این بلوک اجرا می شود
  case y:
    // این بلوک اجرا می شود
  default:
    // وقتی هیچ case مطابق نیست
}

مشاهده در ادیتور

مثال: نام روز با عدد

یک عدد روز داری. سپس سوئیچ، نام روز را چاپ می کند.

package main
import (
  "fmt"
)

func main() {
  day := 4
  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

اگر هیچ case مطابق نبود، 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("Not a weekday")
  }
}

مشاهده در ادیتور

هماهنگی نوع در case

نوع case باید با عبارت سوئیچ هماهنگ باشد. وگرنه خطا می گیری.

package main
import (
  "fmt"
)

func main() {
  a := 3
  switch a {
    case 1:
      fmt.Println("a is one")
    case "b":
      fmt.Println("a is b")
  }
}

مشاهده در ادیتور

گام های عملی

  1. یک متغیر (Variable) مقدار بده.
  2. سوئیچ را روی همان متغیر بنویس.
  3. case ها و یک default اضافه کن.

نکته: برای تصمیم های چندشاخه، سوئیچ خواناتر از if زنجیره ای است.

برای مرور شرط ها، صفحه شرط ها را ببین. همچنین این لینک داخلی با کلمه کانونی: سوئیچ.

جمع بندی سریع

  • Go به break نیاز ندارد.
  • default مسیر پیش فرض است.
  • نوع case باید هماهنگ باشد.
  • سوئیچ کد را خواناتر می کند.