تعبّر عبارات switch عن الشروط التي تتوزع على عدة
فروع.
packagemain
import("fmt""time")
funcmain(){
إليك عبارة switch أساسية.
i:=2fmt.Print("Write ",i," as ")switchi{case1:fmt.Println("one")case2:fmt.Println("two")case3:fmt.Println("three")}
يمكنك استخدام الفواصل للفصل بين عدة تعبيرات في عبارة
case نفسها. ونستخدم في هذا المثال أيضًا حالة
default الاختيارية.
switchtime.Now().Weekday(){casetime.Saturday,time.Sunday:fmt.Println("It's the weekend")default:fmt.Println("It's a weekday")}
تمثل switch دون تعبير طريقة بديلة لصياغة منطق
if/else. ونوضح هنا أيضًا أن تعبيرات case يمكن
أن تكون غير ثابتة.
t:=time.Now()switch{caset.Hour()<12:fmt.Println("It's before noon")default:fmt.Println("It's after noon")}
تقارن switch الخاصة بالأنواع بين الأنواع بدلًا من
القيم. يمكنك استخدامها لمعرفة نوع قيمة مخزنة في واجهة.
في هذا المثال، سيحمل المتغير t النوع الموافق لفرعه.
whatAmI:=func(iany){switcht:=i.(type){casebool:fmt.Println("I'm a bool")caseint: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