Задать вопрос
  • Как спроектировать архитектуру?

    @falconandy
    но и сделать метод SetStatus() экспортируемым, чего не хотелось бы.

    Можете создать отдельные интерфейсы для таких методов, тогда они будут доступны при явном приведении.
    Что-то типа:
    type Item interface {
    	// public methods
    	Folder() Folder
    }
    
    type Folder interface {
    	// public methods
    	Storage() Storage
    }
    
    type Storage interface {
    	// public methods
    }
    
    type StorageInternal interface {
    	SetStatus(status StorageStatus)
    }
    
    item.Folder().Storage().(StorageInternal).SetStatus(StatusModified)


    Возможно в вашем случае можно сделать новый интерфейс неэкспортируемым, тогда он не будет доступен извне.
    Ответ написан
    Комментировать