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]) // вызовет панику: выход за границы среза
}