Как обрабатывать ошибки для значений, объявленных вне funcs в Go исходном файле - PullRequest
1 голос
/ 15 апреля 2020

У меня есть это:

var wd, _ = os.Getwd()
var advanceAgreementTemplateBytes, _ = ioutil.ReadFile(path.Join(wd, "/docs/templates/advance-agreement.template"))
var advanceAgreementTemplate = string(advanceAgreementTemplateBytes)
var t, _ = template.New("advance-agreement").Parse(string(advanceAgreementTemplate))

func sendAdvanceEmail(user *common.User, amount *apd.Decimal, fee *apd.Decimal, created time.Time) { 

   // use variables `t`, `advanceAgreementTemplate`  etc here
 }

Я хочу иметь возможность обрабатывать ошибки в кэшированных переменных вместо использования _ вместо err. Единственный способ сделать это - использовать func init()?

1 Ответ

3 голосов
/ 15 апреля 2020

Если вы хотите проверить их на ошибки, используйте func init или просто инициализируйте их в main.

Не все вызовы имеют варианты Must, и такие варианты не имеют смысла для всех звонки. Не забывайте, что Go способ - правильно выполнять проверку ошибок. Наличие Must упаковщиков для всех возможных неудачных вызовов будет поощрять плохой стиль программирования, где вместо обработки и распространения ошибок каждая ошибка по умолчанию обрабатывает sh.

Очень просто написать свой собственный Must Обертки, если все, что вам нужно, это обработать sh программу при ошибке.

Преимущество написания вашей собственной оболочки Must заключается в том, что вы можете предоставить гораздо лучшее сообщение об ошибке - еще одна вещь, которую Go поощряет , ioutil.ReadFile просто скажет "открыть /docs/templates/advance-agreement.template: нет такого файла или каталога" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...