Урок 51 · Задача 1

ThreeLayers: repo, service, handler

Стратегия «Полки»: repo создаёт сентинелы, service оборачивает через %w, handler различает через errors.Is. Реализуйте Get, GetFile и handle.

00:00:00
Показать решение
GolangРешение
func Get(id string) (string, error) {
	if id == "42" {
		return "данные 42", nil
	}
	return "", ErrNotFound
}

func GetFile(id string) (string, error) {
	data, err := Get(id)
	if err != nil {
		return "", fmt.Errorf("получить файл %s: %w", id, err)
	}
	return data, nil
}

func handle(id string) int {
	_, err := GetFile(id)
	if err != nil {
		if errors.Is(err, ErrNotFound) {
			return 404
		}
		return 500
	}
	return 200
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки