Enumerated types (enums) are a special case of sum types. An enum is a type that has a fixed number of possible values, each with a distinct name. Go doesn’t have an enum type as a distinct language feature, but enums are simple to implement using existing language idioms. |
|
|
|
|
|
Our enum type |
|
The possible values for |
|
By implementing the fmt.Stringer
interface, values of This can get cumbersome if there are many possible values. In such
cases the stringer tool
can be used in conjunction with |
|
|
|
If we have a value of type |
|
|
|
transition emulates a state transition for a server; it takes the existing state and returns a new state. |
|
Suppose we check some predicates here to determine the next state… |
|
|
Next example: Struct Embedding.