но и сделать метод 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)
Возможно в вашем случае можно сделать новый интерфейс неэкспортируемым, тогда он не будет доступен извне.