Switch Case Statement

...

Go switch Statement

swtich bayonotini ko'plab kod bloklaridan birini bajarish uchun tanlash uchun ishlatishingiz mumkin.

Go'dagi switch bayonoti C, C++, Java, JavaScript va PHP'dagi switch bayonotlariga o'xshaydi. Farqi shundaki, u faqat mos keladigan holatni bajaradi, shuning uchun break bayonoti kerak emas.

Yagona-Holat switch Sintaksisi

Sintaksis

switch expression {
case x:
   // kod blok
case y:
   // kod blok
case z:
...
default:
   // kod blok
}

Bu qanday ishlaydi:

  • expression bir marta baholanadi
  • switch ifodaning qiymati har bir holatning qiymatlari bilan solishtiriladi
  • Mos kelsa, bog'langan kod bloki bajariladi
  • default kalit so'zi ixtiyoriydir. Agar hech qanday holat mos kelmasa, bajarilishi kerak bo'lgan kodni belgilaydi

Yagona-Holat switch Misoli

Quyidagi misolda hafta kunini hisoblash uchun hafta kuni raqami ishlatiladi:

package main
import ("fmt")
 
func main() {
  day := 4
 
  switch day {
  case 1:
    fmt.Println("Dushanba")
  case 2:
    fmt.Println("Seshanba")
  case 3:
    fmt.Println("Chorshanba")
  case 4:
    fmt.Println("Payshanba")
  case 5:
    fmt.Println("Juma")
  case 6:
    fmt.Println("Shanba")
  case 7:
    fmt.Println("Yakshanba")
  }
}

Natija

Payshanba

Default Kalit So'zi

default kalit so'zi hech qanday holat mos kelmasa, bajarilishi kerak bo'lgan kodni belgilaydi:

Misol

package main
import ("fmt")
 
func main() {
  day := 8
 
  switch day {
  case 1:
    fmt.Println("Dushanba")
  case 2:
    fmt.Println("Seshanba")
  case 3:
    fmt.Println("Chorshanba")
  case 4:
    fmt.Println("Payshanba")
  case 5:
    fmt.Println("Juma")
  case 6:
    fmt.Println("Shanba")
  case 7:
    fmt.Println("Yakshanba")
  default:
    fmt.Println("Hafta kuni emas")
  }
}

Natija

Hafta kuni emas

Har Bir Holat Qiymatlari

Barcha holat qiymatlari switch ifodaning turiga mos bo'lishi kerak. Aks holda, kompilyator xato xabari beradi:

Misol

package main
import ("fmt")
 
func main() {
  a := 3
 
  switch a {
  case 1:
    fmt.Println("a bir")
  case "b":
    fmt.Println("a b")
  }
}

Natija

./prog.go:11:2: cannot use "b" (type untyped string) as type int

Ushbu sahifada

Xato haqida xabar berish