func getFields() { t := reflect.TypeOf(model.Post{}) fmt.Printf("%v\n", t.Name()) for i := 0; i < t.NumField(); i++ { field := t.Field(i) fmt.Printf("%v\n", field.Name) } } func getInterfaces(file *ast.File) *ast.Field { for _, d := range file.Decls { if d, ok := d.(*ast.GenDecl); ok && d.Tok == token.TYPE { for _, s := range d.Specs { s, _ := s.(*ast.TypeSpec) println(s.Name.String()) } } } return nil }