Çoklu sayıda koşulun sınanması durumunda tercih edilir. Sayfa sonuna fallthrough ile ilgili bilgi eklendi, daha önce yazıyı okuyanlar o kısmı da tekrardan gözden geçirmelidir.

package main

import (
    "fmt"
    "time"
)

func main() {

    // Genel Kullanım
    i := 2
    switch i {
    case 1:
        fmt.Println("i değişkeni 1'e eşittir.")
    case 2:
        fmt.Println("i değişkeni 2'ye eşittir.")
    case 3:
        fmt.Println("i değişkeni 3'e eşittir.")
    }

    // Çoklu Değer
    switch time.Now().Weekday() {
    case time.Saturday, time.Sunday:
        fmt.Println("Hafta sonu..")
    default:
        fmt.Println("Hafta içi..")
    }

    // Koşullu Switch
    t := time.Now()
    switch {
    case t.Hour() < 12:
        fmt.Println("Öğleden önce")
    default:
        fmt.Println("Öğleden sonra")
    }
}

çalıştır!

i değişkeni 2'ye eşittir.
Hafta içi..
Öğleden sonra

Genel Kullanım

    i := 2
    switch i {
    case 1:
        fmt.Println("i değişkeni 1'e eşittir.")
    case 2:
        fmt.Println("i değişkeni 2'ye eşittir.")
    case 3:
        fmt.Println("i değişkeni 3'e eşittir.")
    }

Tanımlanan değişken case ile eşit ise ilgili işlev gerçeleşir.

Çoklu Seçim

    switch time.Now().Weekday() {
    case time.Saturday, time.Sunday:
        fmt.Println("Hafta sonu..")
    default:
        fmt.Println("Hafta içi..")
    }

Günlerin Cumartesi ve Pazar olması durumu yani iki koşulunda gerçekleşmesi durumununa örnektir. Koşulun birden fazla sonuca uygunluğu bu yöntemle denetlenebilir.

Koşullu Switch

    t := time.Now()
    switch {
    case t.Hour() < 12:
        fmt.Println("Öğleden önce")
    default:
        fmt.Println("Öğleden sonra")
    }

Diğer örnekler de eşit olması durumu göz önüne alınarak koşul belirtiliyordu fakat sonucun eşit olmaması durumları da switch ile denetlenebilir.

YENİ BİLGİ: Yeni öğrendiğim fallthrough komutu ile sonraki case’e yani koşula geçmesi sağlanabilir.

    i := 45
    switch {
    case i < 10:
        fmt.Println("i 10'dan küçük")
        fallthrough
    case i < 50:
        fmt.Println("i 50'den küçük")
        fallthrough
    case i < 100:
        fmt.Println("i 100'den küçük")
    }

Bu durumda çıktı önce “i 50’den küçük” yazdıracak ve fallthrough belirtildiği için sonraki casee geçip “i 100’den küçük” yazdıracaktır.

Kategori: