Sobes.tech
Back to questions
Senior
6

Как создать кастомную ошибку в Go, которую можно передать через интерфейс error?

Companies where asked
Магнит Тех

Answer from AI

sobes.tech AI

В Go для создания кастомной ошибки нужно определить тип (обычно структуру), который реализует интерфейс error — то есть содержит метод Error() string. Например:

package main

import "fmt"

type MyError struct {
    Code    int
    Message string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("Error %d: %s", e.Code, e.Message)
}

func doSomething() error {
    return &MyError{Code: 404, Message: "Not Found"}
}

func main() {
    err := doSomething()
    if err != nil {
        fmt.Println(err) // Error 404: Not Found
    }
}

Таким образом, кастомная ошибка может содержать дополнительные поля и логику, а благодаря реализации метода Error() она удовлетворяет интерфейсу error и может передаваться и обрабатываться как обычная ошибка.