Я уверен, что большинство в курсе о том, что пакет
json поддерживает структурный тег omitempty. На данный момент это единственный прямолинейный способ указать, что поле не следует выводить в json если оно содержит нулевое значение. Однако у этого тега есть два минуса:1. Он плохо работает со структурами.2. Он неумеет в переопределение принципа по которому определяется сам факт нулевого значения.Оба пункта довольно долго портили кровь разработчикам сложных вложенных API и заставляли их пользоваться указателями, там, где можно было обойтись без них. И вот Go Team приняла волевое решение и реализовала новый тег. Встречаем
omitzero. Принцип работы прост до невозможности:1. Если поле это структура и она пустая, то маршалить ее он не будет.2. Если у типа поля определен метод IsZero и он вернул true то и его маршалить не будут.КМК именно это можно было привезти еще в версии Go 1.10, т.к. фиче не нужны новые языковые фишки, а необходимость ее была видна еще с Go 1.1. Чтож, лучше поздно чем никогда.