Как стать автором
Обновить

Комментарии 6

Наверно стоит добавить что иногда достаточно использовать значения по умолчанию как эквивалент nil/null с тагом json:omitempty.

Это только при маршалинге. А вот если у вас анмаршалинг, то Вы не сможете понять: Вам не передали значение совсем или передали, но пустое.

Иногда это индифферентно передали или нет если дальнейшая логика корректрно обрабатывает пустые начальные значения.


Например если это 0-indexed номер страницы.

Согласен, иногда возможно, но как универсальное решение нельзя рассматривать.

Мне Go импонирует своим небольшим бинарником, но как язык он ужасен. И лучше или взять Rust или крутить GraalVM.
В то же Java есть Optional с которым легко и надежно и лаконично можно делать так:
Optional.ofNullable(a).map(A::getB).ifPresent(this::makeSomeAction)
и это сломать нельзя как бы вы не конструировали объекты.


А то что вы показываете в Го:


  • занимает кучу кода и хорошо когда платят за кол-во строк написаных
  • не гарантирует по большому счету ничего: *n = NullString{String: "hello", Valid: false}
  • разница между этими JSON'ами все же есть: {"a":"null"} и {"a":null} иначе будет как здесь
  • как можно вообще работать с гошными тегами json:"symbol" binding:"required" не потеряв все нервы? Почему в Java я спокойно могу перейти в Аннотацию и посмотреть документацию по ней, какие возможные поля она имеет и тд а в Го надо помнить все наизусть. А если у меня их наберется с пяток, то сидеть и тупо скролить по горизонтали потому что разбить по строкам их нельзя?
godoc
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории