Slide 176
Slide 176 text
src := `package main
type Example struct {
Foo string` + " `json:\"foo\"` }"
fset := token.NewFileSet()
file, err := parser.ParseFile(fset, "demo", src, parser.ParseComments)
if err != nil {
panic(err)
}
ast.Inspect(file, func(x ast.Node) bool {
s, ok := x.(*ast.StructType)
if !ok {
return true
}
for _, field := range s.Fields.List {
// found field!
field.Tag.Value = process(field)
}
return false
})
tags = c.removeTags(tags)
tags, err = c.removeTagOptions(tags)
if err != nil {
return "", err
}
tags = c.clearTags(tags)
tags = c.clearOptions(tags)
tags, err = c.addTags(fieldName, tags)
if err != nil {
return "", err
}
tags, err = c.addTagOptions(tags)
if err != nil {
return "", err
}
if c.sort {
sort.Sort(tags)
}