Go tests
7.56K subscribers
302 photos
1 video
102 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥полезные ит-каналы

https://t.iss.one/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs
Download Telegram
😁31👍1
🐹 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 упрощает такие случаи и делает обработку ошибок гибче.
3👍2