عبارات 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------------------------------------------آرایه ها>>