Sobes.tech
Back to questions
Middle+
7

Что такое паника в Go? Чем паника отличается от дедлока?

Companies where asked
X5

Answer from AI

sobes.tech AI

Паника в Go — это механизм, который возникает при критической ошибке во время выполнения программы, например, при выходе за границы среза, делении на ноль или явном вызове функции panic(). Паника приводит к немедленному прекращению нормального выполнения текущей горутины и начинает процесс "раскрутки" стека (stack unwinding), вызывая отложенные функции (defer). Если паника не будет обработана с помощью recover(), программа завершится аварийно.

Дедлок — это ситуация, когда одна или несколько горутин навсегда блокируются, ожидая ресурсов или событий, которые никогда не наступят. В отличие от паники, дедлок не приводит к аварийному завершению программы, но она перестаёт прогрессировать.

Итого:

  • Паника — это аварийное состояние, вызывающее остановку программы, если не обработано.
  • Дедлок — это состояние блокировки, при котором программа зависает, но не падает.

Пример паники:

func main() {
    var s []int
    fmt.Println(s[1]) // вызовет панику: выход за границы среза
}