Концепт обработки ошибок в Go довольно интересен в первую очередь тем, что ошибка в Go это просто произвольный объект поддерживающий интерфейс с функцией
if val == 42 {
return fmt.Errorf("42 is not allowed")
}
// normal workflow
return nil
}
...
err := foo(1)
if err != nil {
// do some error handling
}
// normal workflow