Выбор ответа 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.

Варианты ответа

  1. Возвращает первую не-nil ошибку, остальные отбрасывает
  2. Оборачивает обе: errors.Is найдёт любую, текст через \nправильный ответ
  3. Склеивает тексты в одну строку, исходные ошибки теряются
  4. Паникует, если обе ошибки не nil, иначе отдаёт ненулевую

Разбор

errors.Join возвращает ошибку с методом Unwrap() []error, и errors.Is/As обходят все ветки. nil-аргументы отбрасываются, а если все nil, результат nil. Текст состоит из сообщений через \n. Удобно при валидации и при закрытии нескольких ресурсов.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме