From fafbc25bf3aa91ca738683eca77a99a55aacc6a0 Mon Sep 17 00:00:00 2001 From: rrreeezzz Date: Mon, 12 Jul 2021 11:06:55 +0200 Subject: [PATCH] feat: use pointer for optional structures --- xsdgen/xsdgen.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xsdgen/xsdgen.go b/xsdgen/xsdgen.go index 0604c4d..f5415b0 100644 --- a/xsdgen/xsdgen.go +++ b/xsdgen/xsdgen.go @@ -689,6 +689,15 @@ func (cfg *Config) genComplexType(t *xsd.ComplexType) ([]spec, error) { if err != nil { return nil, fmt.Errorf("%s element %s: %v", t.Name.Local, el.Name.Local, err) } + + _, isArrayType := base.(*ast.ArrayType) + if !el.Plural && + fmt.Sprintf("%s", base) != "string" && + !isArrayType && + (el.Nillable || el.Optional) { + base = &ast.StarExpr{X: base} + } + name := namegen.element(el.Name) if el.Wildcard { tag = `xml:",any"`