To clarify the upside that @floooh glossed over, being able to set some fields but leave others default can, depending on the type e.g. ArrayList, break the invariance of fields e.g. ArrayList{.capacity = non_zero_number} which causes items to be defaulted to a zero length slice which afaik has a pointer that’s undefined, using this will result in unchecked illegal and undefined behaviour.
So for ArrayList, and other types, default field values are unsafe to use, so it is recommended that fields with invariance do not get default values, preferring a declaration as an alternative. The addition of decl literals made this practice much nicer to use.