diff --git a/tpl/macros_struct.twig b/tpl/macros_struct.twig index 5b928c4..3c931a6 100644 --- a/tpl/macros_struct.twig +++ b/tpl/macros_struct.twig @@ -479,10 +479,18 @@ func (s *{{ name|default(o.name) }}) Reset() { s.{{ fname }} = s.{{ fname }}[:0] } {% elseif f.type is struct %} - {% if has_token(f, 'virtual') %} - s.{{ fname }} = New{{ f.type|go_type }}() + {% if token(f, 'default', '') != 'null' %} + {% if has_token(f, 'virtual') %} + s.{{ fname }} = New{{ f.type|go_type }}() + {% else %} + s.{{ fname }}.Reset() + {% endif %} {% else %} - s.{{ fname }}.Reset() + {% if has_token(f, 'virtual') %} + s.{{ fname }} = &{{ f.type|go_type }}{} + {% else %} + s.{{ fname }}.Reset() + {% endif %} {% endif %} {% else %} s.{{ fname }} = {{ f|default_val }}