golang实用小工具
- 包含中文字符串的倒置处理
- 通过反射机制修改对应结构的字段
平时遇到的一些有趣小工具记录, 增添点Gopher乐趣.
包含中文字符串的倒置处理
1 2 3 4 5 6 7 8 9
| func Reverse(s string) string { b := []rune(s) fmt.Println(len(s)/2, len(s)) for i := 0; i < len(s)/2; i++ { j := len(b) - i - 1 b[i], b[j] = b[j], b[i] } return string(b) }
|
通过反射机制修改对应结构的字段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| func EvaluationTime(v interface{}, fields []string) { ty := GetType(reflect.TypeOf(v)) for i := 0; i < ty.NumField(); i++ { if isContains(ty.Field(i).Name, fields) { GetValue(reflect.ValueOf(v)).Field(i).SetInt(time.Now().Unix()) } } }
func isContains(name string, fields []string) (contains bool) { for _, field := range fields { if field == name { contains = true break } } return }
func GetType(ty reflect.Type) (t reflect.Type) { if ty.Kind() == reflect.Ptr { t = ty.Elem() return } t = ty return }
func GetValue(value reflect.Value) (v reflect.Value) { if value.Kind() == reflect.Ptr { v = value.Elem() return } v = value return }
|
page PV: ・
site PV: ・
site UV: