From e48ace48ab6eb3f4989e0668dff36033f311088b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Thu, 1 Jun 2023 18:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=BB=E6=84=8F=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AE=9A=E4=B9=89=E4=BB=A5=E5=8F=8A=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- any.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ define.go | 5 ++++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 any.go diff --git a/any.go b/any.go new file mode 100644 index 0000000..98aa8e9 --- /dev/null +++ b/any.go @@ -0,0 +1,65 @@ +// Package wrapper ... +// +// Description : wrapper ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2023-06-01 18:18 +package wrapper + +import "reflect" + +// AnyDataType ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:19 2023/6/1 +func AnyDataType(data interface{}) *AnyType { + return &AnyType{ + data: data, + } +} + +// AnyType ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:19 2023/6/1 +type AnyType struct { + data interface{} +} + +// IsNil 是否为 nil +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:21 2023/6/1 +func (at *AnyType) IsNil() bool { + return at.data == nil +} + +// Type 获取类型 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:22 2023/6/1 +func (at *AnyType) Type() string { + if at.IsNil() { + return DataTypeNil + } + reflectType := reflect.TypeOf(at.data) + switch reflectType.Kind() { + case reflect.Slice: + return DataTypeAnySlice + case reflect.Array: + return DataTypeAnySlice + case reflect.Map: + return DataTypeAnyObject + case reflect.Struct: + return DataTypeAnyObject + case reflect.Pointer: + return DataTypePtr + default: + return reflectType.Kind().String() + } +} diff --git a/define.go b/define.go index 2bf0ae3..6f869b2 100644 --- a/define.go +++ b/define.go @@ -8,7 +8,10 @@ package wrapper const ( - DataTypeAny = "interface" + DataTypeUnknown = "unknown" + DataTypeNil = "nil" + DataTypeAny = "interface" + DataTypePtr = "ptr" DataTypeString = "string"