Выбор ответа Middle Ошибки, defer, panic и recover обновлено
errors.Join
Вопрос
Что делает errors.Join(err1, err2) (Go 1.20+)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Оборачивает обе: errors.Is найдёт любую, текст через \n. errors.Join возвращает ошибку с методом Unwrap() []error, и errors.Is/As обходят все ветки. nil-аргументы отбрасываются, а если все nil, результат nil.
Варианты ответа
- Возвращает первую не-nil ошибку, остальные отбрасывает
- Оборачивает обе: errors.Is найдёт любую, текст через \nправильный ответ
- Склеивает тексты в одну строку, исходные ошибки теряются
- Паникует, если обе ошибки не nil, иначе отдаёт ненулевую
Разбор
errors.Join возвращает ошибку с методом Unwrap() []error, и errors.Is/As обходят все ветки. nil-аргументы отбрасываются, а если все nil, результат nil. Текст состоит из сообщений через \n. Удобно при валидации и при закрытии нескольких ресурсов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.