November 2017
Intermediate to advanced
670 pages
17h 35m
English
We'll use the Go standard library errors package because we simply want to create an error object:
package serverimport ( . "utils" "errors")
We define a ServerOption type to simplify our function signatures:
type ServerOption func(*options) error
Currying allows functions to yield new functions as their return value. Is that what MaxNumber is doing? MaxNumber is a function and returns a ServerOption. A SeverOption is a function. So, yes. We have some currying going on here.
Our first ServerOption function is MaxNumber. It has a simple responsibility: assigning the value of its argument (n) to our option's maxNumber field:
func MaxNumber(n int) ServerOption { return func(o *options) error { o.maxNumber ...