Initial commit: web_hghl_server
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func Struct2Map(obj interface{}) map[string]interface{} {
|
||||
t := reflect.TypeOf(obj)
|
||||
v := reflect.ValueOf(obj)
|
||||
if t.Kind() == reflect.Ptr {
|
||||
t = t.Elem()
|
||||
v = reflect.Indirect(v)
|
||||
}
|
||||
var data = make(map[string]interface{})
|
||||
//func (v Value) NumField() int, 返回v持有的结构体类型值的字段数,如果v的Kind不是Struct会panic
|
||||
for i := 0; i < t.NumField(); i++ {
|
||||
n := t.Field(i).Name
|
||||
vv := v.Field(i).Interface()
|
||||
data[Capitalize(n)] = vv
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
func Map2Struct(obj interface{}, mapInfo map[string]interface{}) interface{} {
|
||||
err := mapstructure.Decode(mapInfo, obj)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
// Capitalize 字符首字母大写
|
||||
func Capitalize(str string) string {
|
||||
var upperStr string
|
||||
vv := []rune(str) // 后文有介绍
|
||||
for i := 0; i < len(vv); i++ {
|
||||
if i == 0 {
|
||||
if vv[i] >= 65 && vv[i] <= 96 { // 后文有介绍
|
||||
vv[i] += 32 // string的码表相差32位
|
||||
upperStr += string(vv[i])
|
||||
} else {
|
||||
fmt.Println("Not begins with uppercase letter,")
|
||||
return str
|
||||
}
|
||||
} else {
|
||||
upperStr += string(vv[i])
|
||||
}
|
||||
}
|
||||
return upperStr
|
||||
}
|
||||
Reference in New Issue
Block a user