Для struct можно реализовать методы, используя функции с receiver. Набор методов реализует interface - это есть некий аналог передачи указателя на базовый класс в С++. Его можно передавать, использовать. Вообщем скрывать детали реализации и ориентироваться только на интерфейс.
Простой пример
play.golang.org/p/jtf7rlkl1m