7.آموزش GO با مثال (شرط switch)

عبارات Switch شروطی با شاخه های زیاد و و صریح هستند.

package main
import "fmt"
import "time"
func main() {

اینجا یه switch پایه داریم:

   i := 2
    fmt.Print("Write ", i, " as ")
    switch i {
    case 1:
        fmt.Println("one")
    case 2:
        fmt.Println("two")
    case 3:
        fmt.Println("three")
    }

شما میتونید چند تا شرط رو با علامت کاما "," در یک case از هم جدا کنید. در این مثال ما از گزینه اختیاریdefault به خوبی نمایش دادیم که درصورت برقرار نبودن شرط case اجرا میشود.

   switch time.Now().Weekday() {
    case time.Saturday, time.Sunday:
        fmt.Println("It's the weekend")
    default:
        fmt.Println("It's a weekday")
    }

شرط switch بدون یک عبارت میتونه جایگزین صریحی برای شرط if/else باشه. اینجا همچنین ما نشون میدیم که چجوری شروط case میتونن غیر-ثابت باشن.

   t := time.Now()
    switch {
    case t.Hour() < 12:
        fmt.Println("It's before noon")
    default:
        fmt.Println("It's after noon")
    }

یک type switch میتونه نوع داده یا متغیر رو مقایسه کنه. شما میتونید با این روش نوع داده و مقدار خودتونو رو کشف کنید. در این مثال متغییر t یکی از شرط های عبارت سوییچ مارو دارا هست.

   whatAmI := func(i interface{}) {
        switch t := i.(type) {
        case bool:
            fmt.Println("I'm a bool")
        case int:
            fmt.Println("I'm an int")
        default:
            fmt.Printf("Don't know type %T\n", t)
        }
    }
    whatAmI(true)
    whatAmI(1)
    whatAmI("hey")
}

اجرای این برنامه

$ go run switch.go 
Write 2 as two
It's a weekday
It's after noon
I'm a bool
I'm an int
Don't know type string

<<شرط if/else------------------------------------------آرایه ها>>