I'll note that `error` is a special case, as it's an interface type that is almost never mentioned via it's implementation, statically. That is, functions never return `*os.PathError` or the like, but they always use `error` as a return type, which is different from `io.Reader`, where e.g. `strings.NewReader` (and similar functions) returns a concrete type.
This makes it the only case where it is kind of important to stay consistent, because you can not get static checking and *have* to rely on type-assertions if you want to figure out whether you got a specific concrete type. On Fri, 14 Feb 2025 at 14:24, Axel Wagner <axel.wagner...@googlemail.com> wrote: > On Fri, 14 Feb 2025 at 14:05, Jason E. Aten <j.e.a...@gmail.com> wrote: > >> I myself still use the classic string based-errors as >> original designed. >> > > I'm not sure what you mean here. From its first commit > <https://github.com/golang/go/commit/e4ae30f5f55b6b6ba2cb9a0c0e3b11d42dc162ee>, > the errors package at least returned pointers. That was shortly after the > `error` interface was introduced and even before that existed, package like > `os` used pointer receivers for their error types. > So, from what I can tell, at least, error types have always been designed > using pointer receivers. > > >> I don't think there is a wide accepted best practice here. >> > > I strongly disagree. The standard library exclusively returns pointer type > (except in `package syscall` I believe). There are good, technical reasons > to use pointer receivers. People should use pointer receivers. > > >> There are >> libraries like "errors" but to me wrapping errors is gratuitous >> complexity that >> only adds noise. That's not a general consensus; just one practitioner's >> opinion. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion visit >> https://groups.google.com/d/msgid/golang-nuts/b0d1a19c-8025-4c36-ad39-a3c0571de3c9n%40googlegroups.com >> <https://groups.google.com/d/msgid/golang-nuts/b0d1a19c-8025-4c36-ad39-a3c0571de3c9n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEmprHrKacS8-kMpxgbeCFPjL7-16Q6dGwBF_qvAaqqNA%40mail.gmail.com.