custom error types

This commit is contained in:
David Eisinger
2023-07-15 23:54:30 -04:00
parent d18745e8c2
commit b19b7f6717

View File

@@ -112,7 +112,11 @@ I find [Go][1] really compelling, even though it's not super applicable to my jo
* Built-in functions for conversion (`float64`, `strconv.Atoi`)
* `if v, ok := fnb.(FancyNumber); ok {` (`v` is a `FancyNumber` if `ok` is true)
* `switch v := i.(type) {` (case per type, `v` is `i` cast to that type)
* [Custom error types][19]
> Usually, a struct is used to create a custom error type. By convention, custom error type names should end with `Error`. Also, it is best to set up the `Error() string` method with a pointer receiver, see this [Stackoverflow comment](https://stackoverflow.com/a/50333850) to learn about the reasoning. Note that this means you need to return a pointer to your custom error otherwise it will not count as `error` because the non-pointer value does not provide the `Error() string` method.
[17]: https://stackoverflow.com/a/40951013
[18]: https://go.dev/doc/effective_go#named-results
[19]: https://exercism.org/tracks/go/concepts/errors