golang实用小工具

    math     golang

  1. 包含中文字符串的倒置处理
  2. 通过反射机制修改对应结构的字段

平时遇到的一些有趣小工具记录, 增添点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: