November 2017
Intermediate to advanced
670 pages
17h 35m
English
We have a typical if err != nil error check at the end of our pipeline:
if err != nil { Error.Error(err)} else { carJson = json.(string)}
This is where we should perform error checking, so having an error check is natural.
We could choose to implement an Either monad to wrap our response in a struct that might look like this:
type Either struct { Value interface{} Error error}
We could include a sum or union type which would return only either Success() or Failure():
type SuccessOrFailure interface { Success() bool Failure() bool}
Then we would have to create another interface to convert our Either to a Success or a Failure. It might look something like this:
type Either interface { SuccessOrFailure Succeeded() StringOption ...