Тогда не делай этого. Private in go является приватным для этого пакета, поэтому он работает как задумано. Попробуйте поработать с инструментами и посмотрите, где вы окажетесь.
Вместо этого вы можете:
- Доверяйте пользователю вашей посылки и оставляйте foo открытым
- Положите оба типа в одну упаковку
- Иметь личное поле, используя открытый тип
- Сделайте нулевое значение полезным, чтобы вам не нужен конструктор
Множество вариантов, но также спросите себя, действительно ли вам нужна эта сложная структура вложенных структур для рассматриваемой проблемы?