Идиоматическая альтернатива нулевому значению, если вам нужно нулевое значение - PullRequest
1 голос
/ 01 июля 2019

Я пытаюсь нормализовать данные из ряда источников. Одним из таких источников является JSON с обнуляемым идентификатором.

type Entry struct {
  ID *int // Can be null
}

В чем идиоматический способ Go работать с обнуляемым идентификатором, где число 0 может быть действительным идентификатором? Я разрываюсь между тем, что я вижу как три варианта.

Нормализуем ли я, передавая, возможно, нулевой указатель?

type NormalizedEntry struct {
  ID *int
}

Добавить отдельное свойство HasID?

type NormalizedEntry struct {
  HasID bool
  ID    int
}

Передам ли я -1 вместо 0, чтобы представить «нулевое значение»? (Например, как strings.Index возвращает -1, если значение не найдено)

type NormalizedEntry struct {
  ID int
}

Или есть какой-то другой, лучший метод, о котором я еще не знаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...