Implementing SOLID principles in GO