Сообщение Re[4]: Го уродлив!!! от 04.05.2022 17:13
Изменено 04.05.2022 17:14 vsb
Re[4]: Го уродлив!!!
Здравствуйте, Pzz, Вы писали:
Pzz>>>А куда он должен его добавлять?
vsb>>В создаваемую ошибку.
Pzz>Ты имеешь ввиду в строку, или куда?
Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.
https://pkg.go.dev/golang.org/x/xerrors вот этот пакет был прототипом этого функционала в стандартной библиотеке го, можно посмотреть, как там сделано. На предложение использовать этот пакет сразу отвечу, что я не люблю писать не-идиоматический код, а в го — особенно.
vsb>>>>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.
Pzz>>>Для автовывода типа переменной.
vsb>>Для этого есть var.
Pzz>На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.
var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.
Pzz>>>А куда он должен его добавлять?
vsb>>В создаваемую ошибку.
Pzz>Ты имеешь ввиду в строку, или куда?
Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.
https://pkg.go.dev/golang.org/x/xerrors вот этот пакет был прототипом этого функционала в стандартной библиотеке го, можно посмотреть, как там сделано. На предложение использовать этот пакет сразу отвечу, что я не люблю писать не-идиоматический код, а в го — особенно.
vsb>>>>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.
Pzz>>>Для автовывода типа переменной.
vsb>>Для этого есть var.
Pzz>На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.
var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.
Re[4]: Го уродлив!!!
Здравствуйте, Pzz, Вы писали:
Pzz>>>А куда он должен его добавлять?
vsb>>В создаваемую ошибку.
Pzz>Ты имеешь ввиду в строку, или куда?
Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.
https://pkg.go.dev/golang.org/x/xerrors вот этот пакет был прототипом этого функционала в стандартной библиотеке го, можно посмотреть, как там сделано. На предложение использовать этот или подобный пакет сразу отвечу, что я не люблю писать не-идиоматический код, а в го — особенно.
vsb>>>>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.
Pzz>>>Для автовывода типа переменной.
vsb>>Для этого есть var.
Pzz>На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.
var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.
Pzz>>>А куда он должен его добавлять?
vsb>>В создаваемую ошибку.
Pzz>Ты имеешь ввиду в строку, или куда?
Errorf возвращает объект, в котором есть строка с описанием ошибки и ссылка на предыдущую ошибку. Вот в этот объект надо добавить еще поле со стектрейсом, полным или хотя бы caller. И распечатывать это при форматировании.
https://pkg.go.dev/golang.org/x/xerrors вот этот пакет был прототипом этого функционала в стандартной библиотеке го, можно посмотреть, как там сделано. На предложение использовать этот или подобный пакет сразу отвечу, что я не люблю писать не-идиоматический код, а в го — особенно.
vsb>>>>:= абсолютно упоротая конструкция. Зачем она нужна в текущем виде — я вообще не понимаю.
Pzz>>>Для автовывода типа переменной.
vsb>>Для этого есть var.
Pzz>На практике, слово var встречается довольно редко. Когда переменную продекларивовать надо, а проинициализировать нечем.
var x = value это валидный го-код. И var x1, x2 = value1, value2. Одно из отличий в том, что с := можно объявить одну переменную, когда вторая уже объявлена, ну ок, это может быть удобно. Но удобно это было бы, если бы := в принципе работала, как универсальная конструкция, позволяющая либо объявлять, либо присваивать значение. Но она так не работает. И порой приходится проходить по коду и заменять := на = из-за того, что сверху объявили переменную с таким именем. В общем единственное отличие и то наполовину бесполезное.