November 2017
Intermediate to advanced
670 pages
17h 35m
English
Our implementation of predicates is performant but restrictive. Take the Any() function signature, for example:
func Any(vs []string, predicate func(string) bool) bool
The Any function only works for slices of string. What if we wanted to iterate over a tree or map structure? We'd have to write separate functions for each. This is a valid argument for requesting Go to support generics. If Go supported generics, our implementations would likely require much less code.
An alternative implementation could be to use empty interfaces. This would solve the problem of having to implement separate functions for each type of data we want to handle, given that an empty interface can take on a value of any type. To use a value of the interface{} ...