English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي في Golang

تعليمات التحكم في Golang

الوظائف والطرق في Golang

المباني في Golang

القطع والصفوف في Golang

السلاسل (String) في Golang

مؤشرات في Golang

واجهات في Golang

المساعي في Golang

استثناءات (Error) في Golang

متنوعات أخرى في Golang

جملة Switch بلغة Go

جملة switch هي جملة فرعية متعددة. يقدم طريقة فعالة للتحويل إلى أجزاء مختلفة من الكود بناءً على قيمة التعبير (ويسمى أيضًا case). يدعم لغة Go نوعين من جمل switch:

  1. تعبير switch

  2. switch النوع

تعبير switch

تعبير switch يشبه جملة switch في اللغات C،C ++،Java. يقدم طريقة بسيطة لتحويل التنفيذ إلى أجزاء مختلفة من الكود بناءً على قيمة التعبير.

النحو:

switch optstatement; optexpression{
    case تعبير1: جملة..
    case تعبير2: جملة..
    ...
    default: Statement..
}

ملاحظة هامة:

  • في تعبير switch، يمكن أن تكون optstatement وoptexpression اختيارية.

  • إذا كان هناكoptstatementوoptpression، فإنه يجب استخدام نقاط السطر (؛) بينها.

  • إذا لم تحتوي جملة switch على أي تعبير، فإن معالج التجميع يفترض أن هذا التعبير صحيح.

  • الجملة الاختيارية، أي optstatement، تحتوي على جمل بسيطة مثل إعلان المتغير، أو جملة الترقيم أو الجملة المخصصة أو النداء بالوظيفة، إلخ.

  • إذا كان هناك متغير في جملة الاختيارية، فإن نطاق هذا المتغير محصور في جملة switch.

  • في جملة switch، لا تحتوي جملة case وdefault على أي جملة break. ولكن إذا احتجت برمجتك، يمكنك استخدام جمل break وfallthrough.

  • جملة default (الافتراضية) في جملة switch هي اختيارية.

  • يمكن أن يحتوي case على عدة قيم، وتتميز هذه القيم بفواصل.

  • إذا لم يحتوي case على أي تعبير، فإن معالج التجميع يفترض أن هذا التعبير صحيح.

مثال على الحصول على أيام الأسبوع المحددة

package main
import "fmt"
func main() {
    // Switch statement uses two types of statements, such as optional statements, day:=4, and expressions like: day
    switch day := 4; day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    case 6:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    الافتراضي:
        fmt.Println("Invalid")
    }
}

الناتج:

Thursday

مثال على جملة switch بدون جملة افتراضية و تعبيرات

package main 
  
import "fmt"
  
func main() { 
    var value int = 2 
      
      // switch statement without optional statements and expressions
   switch { 
       case value == 1: 
       fmt.Println("Hello") 
       case value == 2: 
       fmt.Println("Bonjour") 
       case value == 3: 
       fmt.Println("Namstay") 
       الافتراضي:  
       fmt.Println("Invalid") 
   } 
  
}

الناتج:

Bonjour

الجملة التالية هي جملة switch بدون جملة افتراضية، القيم المتعددة في جملة case:

package main
import "fmt"
func main() {
    var value string = "five"
    // جملة switch دون جملة افتراضية، يحتوي case على عدة قيم
    switch value {
    case "one":
        fmt.Println("C#")
    case "two", "three":
        fmt.Println("Go")
    case "four", "five", "six":
        fmt.Println("Java")
    }
}

الناتج:

Java

switch النوع

عندما تريد مقارنة الأنواع، استخدم switch النوع. في هذا switch، يحتوي case على الأنواع التي يجب مقارنتها بأنواع الموجودة في تعبير switch.

النحو:

switch optstatement; typeswitchexpression{
    case typelist 1: Statement..
    case typelist 2: Statement..
    ...
    default: Statement..
}

ملاحظة هامة:

  • الجملة الاختيارية، وهي optstatement، تشبه الجملة في تعبير switch.

  • يمكن أن يحتوي case على عدة قيم، وتتميز هذه القيم بفواصل.

  • الجملة case والجملة الافتراضية في جملة switch النوع لا تحتوي على جملة break. ولكن يمكن استخدام جملة break وجملة fallthrough إذا لزم الأمر.

  • الجملة الافتراضية هي اختيارية في جملة switch النوع.

  • typeswitchexpressionهو تعبير، يكون نتيجته نوع.

  • إذا تم تخصيص تعبير باستخدام عمودية = في تعبير typeswitchexpression، فإن نوع المتغير يعتمد على نوع الفقرات في case. إذا كان هناك نوعان أو أكثر في فقرات case، فإن نوع المتغير هو نفس نوع المتغير الذي تم إنشاؤه في typeswitchexpression.

package main
import "fmt"
func main() {
    var value interface{}
    switch q := value.(type) {
    case bool:
        fmt.Println("القيمة هي نوع منطقي")
    case float64:
        fmt.Println("القيمة هي نوع float64")
    case int:
        fmt.Println("القيمة هي نوع int")
    الافتراضي:
        fmt.Printf("نوع القيمة هو: %T", q)
    }
}

الناتج:

نوع القيمة هو: <nil>