Type classes allow us to define behavior on types.
As discussed in Chapter 3, Using High-Order Functions, type classes add an additional layer to our type system.
We accomplish this by:
- Defining behavior using Go interfaces (parent type class)
- Declaring a new type (base type class) to wrap base types
- Implementing behavior on our new type classes
Let’s look at our Equals
type class implementation.
Parent class definition:
//4-purely-functional/ch11-monads/05_typeclasss/src/typeclass/equals.go package typeclass import ( "strconv" ) type Equals interface { Equals(Equals) bool }
Equals is our parent type class. All base classes must implement the Equals
method.