تعبّر جمل الاختيار (Switch statements) عن الشروط عبر فروع متعددة.
package main
import (
"fmt"
"time"
)
func main() {
إليك جملة switch أساسية.
i := 2
fmt.Print("اكتب ", i, " كـ ")
switch i {
case 1:
fmt.Println("واحد")
case 2:
fmt.Println("اثنان")
case 3:
fmt.Println("ثلاثة")
}
يمكنك استخدام الفواصل للفصل بين تعبيرات متعددة في نفس عبارة case. نستخدم أيضاً حالة default الاختيارية في هذا المثال.
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("إنه عطلة نهاية الأسبوع")
default:
fmt.Println("إنه يوم عمل")
}
switch بدون تعبير هي طريقة بديلة للتعبير عن منطق if/else. هنا نوضح أيضاً كيف يمكن أن تكون تعبيرات case غير ثابتة.
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("إنه قبل الظهر")
default:
fmt.Println("إنه بعد الظهر")
}
الـ switch حسب النوع (Type switch) يقارن الأنواع بدلاً من القيم. يمكنك استخدامه لاكتشاف نوع قيمة الـ interface. في هذا المثال، المتغير t سيكون له النوع المقابل لحالته.
whatAmI := func(i interface{}) {
switch t := i.(type) {
case bool:
fmt.Println("أنا قيمة منطقية (bool)")
case int:
fmt.Println("أنا عدد صحيح (int)")
default:
fmt.Printf("لا أعرف النوع %T\n", t)
}
}
whatAmI(true)
whatAmI(1)
whatAmI("hey")
}
تشغيل البرنامج:
$ go run switch.go
Write 2 as اثنان
It's a weekday
It's after noon
أنا قيمة منطقية (bool)
أنا عدد صحيح (int)
لا أعرف النوع string المثال التالي: المصفوفات (Arrays).