Есть ли техническая причина, по которой неэкспортируемые поля не включаются в encoding/json? Если нет, и это произвольное решение, может ли быть дополнительная опция черного хода (скажем, «+») для включения, даже если она не экспортирована?
Требование экспорта клиентского кода для получения этой функциональности кажется неудачным, особенно если нижний регистр обеспечивает инкапсуляцию или решение о маршалировании структур принимается намного позже, чем их проектирование.
Как люди справляются с этим? Просто экспортировать все?
Кроме того, экспорт имен полей не затрудняет использование предложенных идиом. Я думаю, что если структура X имеет поле Y, у вас не может быть метода доступа Y(). Если вы хотите предоставить интерфейсный доступ к Y, вы должны придумать новое имя для геттера, и независимо от того, что вы получите, что-то неидиоматическое согласно http://golang.org/doc/efficient_go. html#Getters