Вынести Do в отдельный класс или функцию, на входе принимать (или зависимость в случае объекта) интерфейс с методами DoPrepare, w.DoFirst, DoSecond.
И воспользоваться паттерном "декоратор" когда будете объявлять зависимости, например в main.go.
Бонусом получите тестируемость. Так как сможете легко подсовывать моки.