Golang Object Oriented Design Patterns