Проверяет навыки обработки ошибок.
В Go ошибки обрабатываются явно через error. Паники перехватываются с помощью defer + recover внутри функций.
Go использует явную обработку ошибок:
res, err := doSomething()
if err != nil {
return err
}Паника (panic) прерывает выполнение функции и «поднимается» вверх по стеку. Чтобы предотвратить крах всей программы, можно использовать recover:
func safe() {
defer func() {
if r := recover(); r != nil {
log.Println("Recovered from panic:", r)
}
}()
riskyFunction()
}error: всегда, это стандарт для контроля потока.
panic/recover: для действительно неожиданных ситуаций (например, сбой сети, выход за пределы массива и т.д.).