Switch

Pernyataan switch adalah cara alternatif untuk menulis multiple if-else yang lebih rapi dan mudah dibaca.

Contoh Masalah

Bagaimana cara membuat keputusan berdasarkan nilai tertentu? Misalnya:

  1. Menentukan nama hari berdasarkan angka
  2. Menentukan jenis file berdasarkan ekstensi
  3. Menentukan kategori nilai

Penyelesaian

package main

import (
    "fmt"
    "strings"
)

func main() {
    // 1. Switch untuk hari
    hari := 3
    fmt.Print("Hari ke-", hari, " adalah ")
    
    switch hari {
    case 1:
        fmt.Println("Senin")
    case 2:
        fmt.Println("Selasa")
    case 3:
        fmt.Println("Rabu")
    case 4:
        fmt.Println("Kamis")
    case 5:
        fmt.Println("Jumat")
    case 6:
        fmt.Println("Sabtu")
    case 7:
        fmt.Println("Minggu")
    default:
        fmt.Println("Hari tidak valid")
    }

    // 2. Switch untuk ekstensi file
    namaFile := "dokumen.pdf"
    ekstensi := strings.ToLower(namaFile[strings.LastIndex(namaFile, ".")+1:])
    
    fmt.Printf("\nFile %s adalah ", namaFile)
    switch ekstensi {
    case "pdf":
        fmt.Println("dokumen PDF")
    case "jpg", "jpeg", "png":
        fmt.Println("file gambar")
    case "mp3", "wav":
        fmt.Println("file audio")
    default:
        fmt.Println("file tidak dikenal")
    }

    // 3. Switch dengan kondisi
    nilai := 85
    fmt.Printf("\nNilai %d mendapat grade ", nilai)
    
    switch {
    case nilai >= 90:
        fmt.Println("A")
    case nilai >= 80:
        fmt.Println("B")
    case nilai >= 70:
        fmt.Println("C")
    case nilai >= 60:
        fmt.Println("D")
    default:
        fmt.Println("E")
    }
}

Penjelasan Kode

  1. Switch Biasa

    • Membandingkan nilai dengan case
    • Case harus unik
    • Default untuk nilai yang tidak cocok
  2. Switch dengan Multiple Case

    • Beberapa nilai dalam satu case
    • Dipisahkan dengan koma
  3. Switch tanpa Variabel

    • Menggunakan kondisi langsung
    • Mirip if-else

Output

Hari ke-3 adalah Rabu

File dokumen.pdf adalah dokumen PDF

Nilai 85 mendapat grade B

Tips

  • Gunakan switch untuk kode yang lebih rapi dari if-else
  • Default case sebaiknya selalu ada
  • Go switch tidak perlu break (otomatis break)
  • Bisa menggunakan fallthrough untuk lanjut ke case berikutnya