4 ms·
>Originally this returned nil when the price information could not be loaded, but a refactoring caused it instead to return 0 which the client happily used. Ha
by Mawr 6y ago
>Originally this returned nil when the price information could not be loaded, but a refactoring caused it instead to return 0 which the client happily used.
Hard to feel sympathetic, as this practice violates the Go convention of adding an additional return value to the function to indicate failure, either of type error or bool, as appropriate.
>Go makes it impossible to create a Maybe/Option type
It's very much possible: https://play.golang.org/p/MCxGcZ-rJRU https://play.golang.org/p/MCxGcZ-rJRU.
Of course, it's not generic, but I have a feeling that might change soon :)
- ummonk 6y agoThe Option type there isn't type safe. E.g. https://play.golang.org/p/CiQLf4yWhCO https://play.golang.org/p/CiQLf4yWhCO doesn't throw a type error for the Get function even though I've omitted the null check.
- Mawr 6y agoSorry, but that's just ridiculous. Obviously the language can't prevent you from defining your Option type incorrectly. The point is that it's not possible to misuse it.
- ummonk 6y agoOkay let me rephrase. The type checker doesn't make sure you've checked the value of ok e.g. you can do this: https://play.golang.org/p/x18Rh2iwd2E https://play.golang.org/p/x18Rh2iwd2E Go constantly requires boiler-plate checks for errors, null values etc. without the type checker helping ensure you've checked for an error or null value.