Каков вариант использования публичных полей в приватных структурах в Go

Предположим, существует следующая частная структура:

type privateUser struct {
    privateName string
    PublicName string
}

Есть ли польза от общедоступных полей в частной структуре? Вне пакета вся структура недоступна. Внутри пакета мы можем получить доступ к обоим полям.

Я что-то упускаю, в чем разница между видимостью наличия частного или публичного поля в частной структуре?

Извиняюсь, в предыдущем комментарии был указан неправильный вопрос как потенциальный дубликат. Это вопрос, на который я должен был сослаться (есть ряд ответов).

Brits 21.07.2024 11:19

Распространенным вариантом использования является кодирование и декодирование с использованием кодирования/json и подобных пакетов.

Cerise Limón 21.07.2024 11:19
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Reflection позволяет только устанавливать экспортированные поля ( Go Playground).

Как правильно заметила Сериз Лимон , это влияет на то, как эти поля обрабатываются пакетами, использующими отражение, например coding/json.

Кроме того, если у вас есть функция New... для создания этой структуры в другом пакете, вы все равно можете получить доступ к общедоступным полям, но не можете создать саму структуру. Я предполагаю, что последний вариант использования раздражает, вам, вероятно, не следует этого делать.

Кроме того, многим библиотекам cli необходимы экспортированные поля, чтобы можно было заполнять их из флагов или переменных окружения.

Markus W Mahlberg 21.07.2024 11:37

Другие вопросы по теме