شرط switch

دستور switch در Go: case های چندگانه، switch بدون عبارت، fallthrough و Type Switch.

دستور switch

switch جایگزین تمیزتر برای زنجیره‌های طولانی if...else است:

day := 3

switch day {
case 1:
    fmt.Println("شنبه")
case 2:
    fmt.Println("یکشنبه")
case 3:
    fmt.Println("دوشنبه")
default:
    fmt.Println("روز نامعتبر")
}

switch هوشمندتر در Go!

برخلاف C/Java، در Go هر case به‌طور خودکار شکسته می‌شود (break خودکار) — نیازی به نوشتن break نیست!

چند مقدار در یک case

day := 6

switch day {
case 6, 7:                    ← چند مقدار با کاما
    fmt.Println("آخر هفته")
default:
    fmt.Println("روز کاری")
}

switch بدون عبارت (switch true)

مثل زنجیره if...else if اما تمیزتر:

hour := 14

switch {
case hour < 12:
    fmt.Println("صبح بخیر")
case hour < 18:
    fmt.Println("بعدازظهر بخیر")
default:
    fmt.Println("شب بخیر")
}

fallthrough — ادامه به case بعدی

اگر خواستید رفتار C را داشته باشید:

switch x := 1; x {
case 1:
    fmt.Println("یک")
    fallthrough        ← به case بعدی هم می‌رود
case 2:
    fmt.Println("دو")
}

Type Switch — بررسی نوع

برای بررسی نوع مقادیر اینترفیس:

var val interface{} = 42

switch v := val.(type) {
case int:
    fmt.Println("عدد صحیح:", v)
case string:
    fmt.Println("رشته:", v)
case bool:
    fmt.Println("بولی:", v)
default:
    fmt.Println("نوع ناشناخته")
}

switch روی رشته‌ها

lang := "go"

switch lang {
case "go", "golang":
    fmt.Println("زبان گو 🐹")
case "python":
    fmt.Println("پایتون 🐍")
case "javascript":
    fmt.Println("جاوااسکریپت")
}

این مبحث بخشی از دوره آموزش کامل گو است.

ابزارهای مرتبط