Re[5]: Го уродлив!!!
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.05.22 17:17
Оценка: :)
Здравствуйте, vsb, Вы писали:

vsb>Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.


Если ты имеешь ввиду удобства, добавленные пакетом errors, то этот пакет появился сильно позже, чем fmt.Errorf.

На самом деле, с точки зрения отладки, стек под рукой иметь, конечно, удобно. Но если ты возвращаешь ошибки, которые в среднем обрабатываются более верхним уровнем, а не печатаются для пользователя, то каждый раз аллоцировать место под стек (который в среднем не пригодится) может оказаться дороговато. Вероятно, поэтому ничего не стали менять.

vsb>var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.


Ну да, бывает иногда. Раздражает немного, но не так уж, чтобы ужас-ужас-ужас.

Наверное, еще пятью языками позже Пайк придумает, как и эту проблему обойти
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.