GoDasturchi
Avoid Else After Return

Avoid Else After Return

return'dan keyin else ishlatmang

Agar if bloki return bilan tugasa, undan keyingi else shart emas — kod shu bilan ham xuddi shunday ishlaydi, lekin kamroq chuqurlashadi va o'qish osonlashadi.

example.go
package main

import "fmt"

// Yomon: keraksiz else, chuqurlik oshadi
func gradeOld(score int) string {
	if score >= 60 {
		return "o'tdi"
	} else {
		if score >= 40 {
			return "qayta topshirish"
		} else {
			return "yiqildi"
		}
	}
}

// Yaxshi: erta return, else yo'q, hammasi bir darajada
func grade(score int) string {
	if score >= 60 {
		return "o'tdi"
	}
	if score >= 40 {
		return "qayta topshirish"
	}
	return "yiqildi"
}

func main() {
	fmt.Println(grade(75))
	fmt.Println(grade(50))
	fmt.Println(grade(20))
}

gradeOld va grade bir xil natija beradi, lekin grade o'qish uchun ancha osonroq: har bir shart bir xil chuqurlikda, "bosqichma-bosqich chiqib ketish" mantig'i bilan o'qiladi. Bu naqsh "guard clause" (qo'riqchi shart) deb ham ataladi — avval istisno holatlarni erta return bilan yopib, asosiy mantiqni chuqur ichma-ich joylashtirmaslik.

>_ Exercise

else'siz, erta return bilan yozing.

  • categorize(age int) funksiyasini yozing: 18 dan kichik bo'lsa "bolalar", 65 dan katta/teng bo'lsa "nafaqaxo'r", aks holda "kattalar"
  • else ishlatmasdan, faqat erta return bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

if bloki return bilan tugasa, keyingi kod avtomatik "else" holatida ishlaydi — ortiqcha else yozib, chuqurlikni oshirmang.

NEXT UP

Use Named Result Parameters Sparingly

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Avoid Else After Return

return'dan keyin else ishlatmang

Agar if bloki return bilan tugasa, undan keyingi else shart emas — kod shu bilan ham xuddi shunday ishlaydi, lekin kamroq chuqurlashadi va o'qish osonlashadi.

example.go
package main

import "fmt"

// Yomon: keraksiz else, chuqurlik oshadi
func gradeOld(score int) string {
	if score >= 60 {
		return "o'tdi"
	} else {
		if score >= 40 {
			return "qayta topshirish"
		} else {
			return "yiqildi"
		}
	}
}

// Yaxshi: erta return, else yo'q, hammasi bir darajada
func grade(score int) string {
	if score >= 60 {
		return "o'tdi"
	}
	if score >= 40 {
		return "qayta topshirish"
	}
	return "yiqildi"
}

func main() {
	fmt.Println(grade(75))
	fmt.Println(grade(50))
	fmt.Println(grade(20))
}

gradeOld va grade bir xil natija beradi, lekin grade o'qish uchun ancha osonroq: har bir shart bir xil chuqurlikda, "bosqichma-bosqich chiqib ketish" mantig'i bilan o'qiladi. Bu naqsh "guard clause" (qo'riqchi shart) deb ham ataladi — avval istisno holatlarni erta return bilan yopib, asosiy mantiqni chuqur ichma-ich joylashtirmaslik.

>_ Exercise

else'siz, erta return bilan yozing.

  • categorize(age int) funksiyasini yozing: 18 dan kichik bo'lsa "bolalar", 65 dan katta/teng bo'lsa "nafaqaxo'r", aks holda "kattalar"
  • else ishlatmasdan, faqat erta return bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

if bloki return bilan tugasa, keyingi kod avtomatik "else" holatida ishlaydi — ortiqcha else yozib, chuqurlikni oshirmang.

NEXT UP

Use Named Result Parameters Sparingly