TGViewer
Go tests Go tests @golangtests · 7.84K subscribers
Post #845 2.26K
🐹 Go error handling nuance

В стандартной библиотеке errors.As есть тонкость:
оно не считает `ValueErrorType` и `*ValueErrorType` одним и тем же типом ошибки.

В отличие от него, nstd.TrackErrorOf из go101.org/nstd обрабатывает оба варианта как одинаковые типы ошибок.
👉 Документация: https://docs.go101.org/std/pkg/go101.org/nstd.html#name-TrackErrorOf

Пример:


package main

import "errors"

type E struct{}
func (E) Error() string { return "" }

func main() {
e := &E{}
println(
errors.As(*e, &e), // false
errors.As(*e, e), // false
errors.As(e, e), // true
errors.As(e, &e), // true
)
}


💡 Помни, что в Go T и *T — это разные типы, даже если они реализуют один интерфейс.
nstd.TrackErrorOf упрощает такие случаи и делает обработку ошибок гибче.
  • ❤ 4
  • 👍 2
More from @golangtests
  1. Sep 26, 2026Nil-интерфейс в Go: почему err == nil выдаёт false? Nil-интерфейс в Go ломает даже опытных…
  2. Sep 23, 2026Задача по Go: `select` и побочные эффекты Что выведет программа? package main import "fmt"…
  3. Sep 23, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  4. Sep 13, 2026👣 Задача на Go 1.27: concurrent job scheduler с generic methods Нужно реализовать библиот…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 2, 2026👣 Go 1.27: почему две разные closure внезапно могут иметь одинаковый адрес функции? Что в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →