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 и может передаваться и обрабатываться как обычная ошибка.