Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "errors"
import "fmt"
type NotFound struct{ ID int }
func (e *NotFound) Error() string { return "not found" }
func main() {
var nf *NotFound
fmt.Println(errors.As(fmt.Errorf("load: %w", &NotFound{ID: 7}), &nf))
}true
- Ждать
false:errors.Asпроходит всю цепочку, которую строит%w, находит*NotFoundвнутри обёртки и кладёт его вnf. - Ждать, что
&nfне скомпилируется:errors.Asпринимает адрес переменной искомого типа, здесь — адрес переменной типа*NotFound.
- Что вернёт
errors.Is(err, &NotFound{ID: 7})для той же обёрнутой ошибки и почему? - Что случится, если передать в
errors.Asпеременнуюnfвместо&nf?