Комментарии 6
Наверно стоит добавить что иногда достаточно использовать значения по умолчанию как эквивалент nil/null
с тагом json:omitempty
.
Мне 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 я спокойно могу перейти в Аннотацию и посмотреть документацию по ней, какие возможные поля она имеет и тд а в Го надо помнить все наизусть. А если у меня их наберется с пяток, то сидеть и тупо скролить по горизонтали потому что разбить по строкам их нельзя?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Go: Как использовать nil-значения без использования ссылочных типов