TGViewer
Go tests Go tests @golangtests · 7.82K subscribers
Post #820 2.14K
👣 Напишите в комментариях, что выведет код и почему?


package main

import (
"fmt"
)

func tricky() (err error) {
defer func() {
fmt.Println("D1:", err) // состояние именованного результата до recover
if r := recover(); r != nil {
err = fmt.Errorf("recovered: %v", r)
}
fmt.Println("D2:", err) // состояние после recover
}()

defer func() {
panic(2) // паника №2 во время размотки стека
}()

panic(1) // паника №1
}

func main() {
fmt.Println("start")
fmt.Println("ret:", tricky())
fmt.Println("end")
}


Вопросы:
🟠Какой будет порядок строк start, D1: ..., D2: ..., ret: ..., end?
🟠Какое значение попадёт в err и что напечатает fmt.Println("ret:", ...)?
🟠Почему паника из второго defer меняет исход паники?

@golangtests
  • ❤ 3
  • 🔥 3
  • 👍 1
More from @golangtests
  1. Sep 26, 2026Nil-интерфейс в Go: почему err == nil выдаёт false? Nil-интерфейс в Go ломает даже опытных…
  2. Sep 23, 2026Задача по Go: `select` и побочные эффекты Что выведет программа? package main import "fmt"…
  3. Sep 23, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  4. Sep 13, 2026👣 Задача на Go 1.27: concurrent job scheduler с generic methods Нужно реализовать библиот…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 2, 2026👣 Go 1.27: почему две разные closure внезапно могут иметь одинаковый адрес функции? Что в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →