Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpErPrm 41 of 280 menu
◀ ▶

Практика на свои ошибки в Go

Дан следующий код:

package main import ( "errors" "fmt" ) type PathError struct { Path string Err error } inner := errors.New("fail")

Допишите метод Error, создайте PathError с путем "main.go" и выведите текст ошибки.

Даны переменные:

package main import ( "errors" "fmt" ) type PathError struct { Path string Err error } func (e *PathError) Error() string { return e.Path + ": " + e.Err.Error() } func fetch(path string) error { return &PathError{ Path: path, Err: errors.New("timeout"), } }

Вызовите fetch с "api.cfg" в main и выведите ошибку.

Дана ошибка:

package main import ( "errors" "fmt" ) type PathError struct { Path string Err error } func (e *PathError) Error() string { return e.Path + ": " + e.Err.Error() } base := &PathError{ Path: "main.go", Err: errors.New("fail"), } err := fmt.Errorf("save: %w", base)

Достаньте Path из PathError внутри err и выведите его.

Дан следующий код:

package main import ( "errors" "fmt" ) type PathError struct { Path string Err error } func (e *PathError) Error() string { return e.Path + ": " + e.Err.Error() } inner := &PathError{ Path: "log.txt", Err: errors.New("denied"), } mid := fmt.Errorf("step: %w", inner) outer := fmt.Errorf("job: %w", mid)

Проверьте, есть ли в outer тип PathError, и выведите поле Path при успехе.

Даны переменные:

package main import ( "errors" "fmt" ) type PathError struct { Path string Err error } func (e *PathError) Error() string { return e.Path + ": " + e.Err.Error() } func ok() error { return nil }

Сравните результат ok с nil и выведите "done" при отсутствии ошибки.

Создайте тип LineError с полем Line типа int и методом текста "line N" с подставленным номером. Верните его из функции с результатом error и выведите текст в main для 12.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить