Sobes.tech
Senior
36

// Сұрақ 2. Экранға не шығарады package main import "fmt" func main() { { defer fmt.Println(1) } defer fmt.Println(2) }

Сұралған компаниялар
МВидео/эльдорадо

AI-дан жауап

sobes.tech AI

Бағдарлама мынаны шығарады:

2
1

Түсіндірме:

Go тілінде defer шақырулары функциядан шығу кезінде кешіктіріледі және кері тәртіпте орындалады — шақырулар стегі.

Берілген кодта:

{
    defer fmt.Println(1)
}
defer fmt.Println(2)

Бірінші defer блок ішінде орналасқан, бірақ блок жеке функция емес, сондықтан defer тіркеледі және main-дан шығу кезінде орындалады.

defer тіркеу тәртібі:

  1. defer fmt.Println(1)
  2. defer fmt.Println(2)

main-дан шығу кезінде олар кері тәртіпте орындалады:

  • Алдымен fmt.Println(2)
  • Содан кейін fmt.Println(1)

Сондықтан экранға шығарылады:

2
1