| [Chain of Responsibility](chain_of_responsibility.go) | Avoids coupling a sender to receiver by giving more than object a chance to handle the request |
| [Command](command.go) | Bundles a command and arguments to call later |
| [Mediator](mediator.go) | Connects objects and acts as a proxy |
| [Memento](memento.go) | Generate an opaque token that can be used to go back to a previous state |
| [Observer](observer.go) | Provide a callback for notification of events/changes to data |
| [Registry](registry.go) | Keep track of all subclasses of a given class |
| [State](state.go) | Encapsulates varying behavior for the same object based on its internal state |
| [Strategy](strategy/strategy.go) | Enables an algorithm's behavior to be selected at runtime |
| [Template](template.go) | Defines a skeleton class which defers some methods to subclasses |
| [Visitor](visitor.go) | Separates an algorithm from an object on which it operates |
| [Broadcast](broadcast.go) | Transfers a message to all recipients simultaneously |
| [Coroutines](coroutine/coroutine.go) | Subroutines that allow suspending and resuming execution at certain locations |
| [Generators](generator.go) | Yields a sequence of values one at a time |
| [Reactor](reactor.go) | Demultiplexes service requests delivered concurrently to a service handler and dispatches them syncronously to the associated request handlers |
| [Parallelism](parallelism/md5.go) | Completes large number of indenpendent tasks |
| [Producer Consumer](producer_consumer.go) | Separates tasks from task executions |
| [Scheduler](scheduler.go) | Orchestrates steps to be performed as part of a task |
| [Bulkheads](bulkhead.go) | Enforces a principle of failure containment (i.e. prevents cascading failures) |
| [Circuit-Breaker](circuitbreaker/circuit_breaker.go) | Stops the flow of the requests when requests are likely to fail |
| [Deadline](deadline.go) | Allows clients to stop waiting for a response once the probability of response becomes low (e.g. after waiting 10 seconds for a page refresh)|
| [Fail-Fast](fail_fast.go) | Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied |
| [Handshaking](handshaking.go) | Asks a component if it can take any more load, if it can't the request is declined |
| [Steady-State](steady_state.go) | For every service that accumulates a resource, some other service must recycle that resource |