فهرست منبع

添加反射函数

yjp 6 ماه پیش
والد
کامیت
ddb3dd7aee
2فایلهای تغییر یافته به همراه8 افزوده شده و 0 حذف شده
  1. 4 0
      reflectutils/type.go
  2. 4 0
      reflectutils/value.go

+ 4 - 0
reflectutils/type.go

@@ -60,6 +60,10 @@ func IsTypeStructOrStructPointer(t reflect.Type) bool {
 	return t.Kind() == reflect.Struct || IsTypeStructPointer(t)
 }
 
+func IsTypeStructSliceOrStructSlicePointer(t reflect.Type) bool {
+	return IsSliceTypeOf(t, reflect.Struct) || (t.Kind() == reflect.Pointer && IsSliceTypeOf(t.Elem(), reflect.Struct))
+}
+
 func IsTypeTime(t reflect.Type) bool {
 	return t.Kind() == reflect.Struct && t.String() == "time.Time"
 }

+ 4 - 0
reflectutils/value.go

@@ -64,6 +64,10 @@ func IsValueStructOrStructPointer(v reflect.Value) bool {
 	return v.Kind() == reflect.Struct || IsValueStructPointer(v)
 }
 
+func IsValueStructSliceOrStructSlicePointer(v reflect.Value) bool {
+	return IsSliceValueOf(v, reflect.Struct) || (v.Kind() == reflect.Pointer && IsSliceValueOf(v.Elem(), reflect.Struct))
+}
+
 func IsValueTime(v reflect.Value) bool {
 	return v.Kind() == reflect.Struct && v.Type().String() == "time.Time"
 }