Golang基础
切片的底层实现
map的底层实现
如何实现并发
1、go
2、waitgroup
3、context
反射完成Json
func MyJson(x interface{}) string {
rTyp := reflect.TypeOf(x)
rVal := reflect.ValueOf(x)
num := rTyp.Elem().NumField()
sb := strings.Builder{}
sb.WriteString("{\n")
for i := 0; i < num; i++ {
f := rVal.Elem().Field(i)
// tag
fName := rTyp.Elem().Field(i).Tag.Get("conn")
if fName == "" {
continue
}
//kind
k := f.Kind()
//value
str := fmt.Sprintf(" ")
if k == reflect.Int {
str = fmt.Sprintf("%s\"%s\": %d,\n", str, fName, f.Int())
sb.WriteString(str)
} else if k == reflect.String {
str = fmt.Sprintf("%s\"%s\": \"%s\",\n", str, fName, f.String())
sb.WriteString(str)
} else if k == reflect.Struct {
fmt.Println("将要递归还未完成")
}
}
sb.WriteString("}\n")
return sb.String()
}