package util import ( "encoding/json" "github.com/gin-gonic/gin" "github.com/golang/glog" "webserver/extend/code" "crypto/rand" "fmt" "reflect" "strings" ) // iterater field of struct to lowcast. // return type: string slice. func FiledbyStuct(stuct interface{}) []string { var strtmp []string t := reflect.TypeOf(stuct) for i := 0; i < t.NumField(); i++ { strtmp = append(strtmp, strings.ToLower(string(t.Field(i).Name))) } return strtmp } // // ResponseFormat 返回数据格式化 func ResponseFormat(c *gin.Context, respStatus *code.Code, data interface{}) { if respStatus == nil { glog.Error("response status param not found!") respStatus = code.RequestParamError } c.JSON(respStatus.Status, gin.H{ "code": respStatus.Status, "success": respStatus.Success, "msg": respStatus.Message, "data": data, }) return } func PseudoUuid() (uuid string) { b := make([]byte, 16) rand.Read(b) uuid = fmt.Sprintf("%X-%X-%X-%X-%X", b[0:4], b[4:6], b[6:8], b[8:10], b[10:]) return } //struct转map func Struct2Map(obj interface{}) map[string]interface{} { resultMap :=make(map[string]interface{},0) bytesData, err := json.Marshal(obj) if err !=nil { return resultMap } json.Unmarshal(bytesData, &resultMap) return resultMap // //t := reflect.TypeOf(obj) //v := reflect.ValueOf(obj) // //var data = make(map[string]interface{}) //for i := 0; i < t.NumField(); i++ { // data[t.Field(i).Name] = v.Field(i).Interface() //} //return data }