package api import ( "reflect" "time" ) type Image struct { ID int `json:"id" db:"id"` Width int `json:"width" db:"width"` Height int `json:"height" db:"height"` Content string `json:"content" db:"content"` Remark string `json:"remark" db:"remark"` Description string `json:"description" db:"description"` Tags string `json:"tags" db:"tags"` Rank string `json:"rank" db:"rank"` CommentNum int `json:"comment_num" db:"comment_num"` ArticleCategoryTopId int `json:"article_category_top_id" db:"article_category_top_id"` PraiseCount int `json:"praise_count" db:"praise_count"` CollectCount int `json:"collect_count" db:"collect_count"` ArticleID int `json:"article_id" db:"article_id"` UserID int `json:"user_id" db:"user_id"` User User `json:"user" db:"-"` Article Article `json:"article" db:"-"` CreateTime time.Time `json:"create_time" db:"create_time"` UpdateTime time.Time `json:"update_time" db:"update_time"` } type User struct { ID int `json:"id" db:"id"` UserName *string `json:"user_name" db:"user_name"` Avatar *string `json:"avatar" db:"avatar"` Rank *string `json:"rank" db:"rank"` CreateTime time.Time `json:"create_time" db:"create_time"` UpdateTime time.Time `json:"update_time" db:"update_time"` } type Article struct { ID int `json:"id" db:"id"` Title string `json:"title" db:"title"` Tags string `json:"tags" db:"tags"` CreateTime time.Time `json:"create_time" db:"create_time"` UpdateTime time.Time `json:"update_time" db:"update_time"` } // 利用反射获取每个结构体所有字段 func getFields(s interface{}) (fields []string) { t := reflect.TypeOf(s) for i := 0; i < t.NumField(); i++ { fields = append(fields, t.Field(i).Name) } return fields } // 检查字段是否存在 func checkFields(fields []string, fields_list []string) bool { for _, field := range fields { if !contains(fields_list, field) { return false } } return true } // 判断字符串是否存在于字符串数组中 func contains(s []string, e string) bool { for _, v := range s { if v == e { return true } } return false } func QueryUserList(fields []string) (user_list []User) { if !checkFields(fields, getFields(User{})) { return } return }