GoDasturchi
Advanced Switch Patterns

Advanced Switch Patterns

Ilg'or switch naqshlari

Go'ning switchi faqat aniq qiymatlarni emas, shartlarni ham solishtira oladi ("switch true"), va turlarni tekshirish uchun ham ishlatiladi ("type switch").

example.go
package main

import "fmt"

// Shartli switch (aniq qiymatsiz) — if/else if zanjirining muqobili
func describe(n int) string {
	switch {
	case n < 0:
		return "manfiy"
	case n == 0:
		return "nol"
	default:
		return "musbat"
	}
}

// Type switch — qiymatning haqiqiy turini tekshiradi
func typeOf(v interface{}) string {
	switch v.(type) {
	case int:
		return "son"
	case string:
		return "matn"
	default:
		return "boshqa"
	}
}

func main() {
	fmt.Println(describe(-5))
	fmt.Println(typeOf("salom"))
}

switch { case shart1: ... } — qiymatsiz switch, har bir case — to'liq mantiqiy shart (bu "Advanced Flag Patterns"dagi kabi emas, oddiy if/else if zanjiriga to'g'ridan-to'g'ri muqobil). switch v.(type) esa interface{} ichidagi qiymatning haqiqiy turi bo'yicha tarmoqlanadi — bu "Interfaces & Polymorphism" kursida ko'rgan type assertion'ning ko'plab holatlar uchun qulay shakli.

>_ Exercise

Shartli switch bilan baho toifasini aniqlang.

  • letterGrade(score int) string yozing: >=90 "A", >=75 "B", >=60 "C", aks holda "F"
  • qiymatsiz switch (switch { case ...: }) bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Qiymatsiz switch { case shart: } — ko'p shartli if/else if zanjiriga toza muqobil; switch v.(type) esa turlarni tekshirish uchun ishlatiladi.

NEXT UP

Table-Driven Logic

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Advanced Switch Patterns

Ilg'or switch naqshlari

Go'ning switchi faqat aniq qiymatlarni emas, shartlarni ham solishtira oladi ("switch true"), va turlarni tekshirish uchun ham ishlatiladi ("type switch").

example.go
package main

import "fmt"

// Shartli switch (aniq qiymatsiz) — if/else if zanjirining muqobili
func describe(n int) string {
	switch {
	case n < 0:
		return "manfiy"
	case n == 0:
		return "nol"
	default:
		return "musbat"
	}
}

// Type switch — qiymatning haqiqiy turini tekshiradi
func typeOf(v interface{}) string {
	switch v.(type) {
	case int:
		return "son"
	case string:
		return "matn"
	default:
		return "boshqa"
	}
}

func main() {
	fmt.Println(describe(-5))
	fmt.Println(typeOf("salom"))
}

switch { case shart1: ... } — qiymatsiz switch, har bir case — to'liq mantiqiy shart (bu "Advanced Flag Patterns"dagi kabi emas, oddiy if/else if zanjiriga to'g'ridan-to'g'ri muqobil). switch v.(type) esa interface{} ichidagi qiymatning haqiqiy turi bo'yicha tarmoqlanadi — bu "Interfaces & Polymorphism" kursida ko'rgan type assertion'ning ko'plab holatlar uchun qulay shakli.

>_ Exercise

Shartli switch bilan baho toifasini aniqlang.

  • letterGrade(score int) string yozing: >=90 "A", >=75 "B", >=60 "C", aks holda "F"
  • qiymatsiz switch (switch { case ...: }) bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Qiymatsiz switch { case shart: } — ko'p shartli if/else if zanjiriga toza muqobil; switch v.(type) esa turlarni tekshirish uchun ishlatiladi.

NEXT UP

Table-Driven Logic