Implement design patterns with go