Design Patterns in Go