2023-06-11 21:17:27 +08:00
|
|
|
// Package wrapper ...
|
|
|
|
//
|
|
|
|
// Description : wrapper ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2023-06-11 21:02
|
|
|
|
package wrapper
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Array 数组实例
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 21:03 2023/6/11
|
|
|
|
func Array(value interface{}) *ArrayType {
|
|
|
|
return &ArrayType{
|
|
|
|
value: value,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ArrayType ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 21:05 2023/6/11
|
|
|
|
type ArrayType struct {
|
|
|
|
value interface{}
|
|
|
|
}
|
|
|
|
|
|
|
|
// IsNil 输入是否为nil
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 21:11 2023/6/11
|
|
|
|
func (at *ArrayType) IsNil() bool {
|
|
|
|
return at.value == nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// IsValid 检测是否为数组类型
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 21:06 2023/6/11
|
|
|
|
func (at *ArrayType) IsValid() bool {
|
|
|
|
if at.IsNil() {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
byteData, err := json.Marshal(at.value)
|
|
|
|
if nil != err {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
return strings.HasPrefix(string(byteData), "[") && strings.HasSuffix(string(byteData), "]")
|
|
|
|
}
|
2023-06-11 21:22:08 +08:00
|
|
|
|
|
|
|
// ItemIsInterface 数组每一项是否为interface
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 21:20 2023/6/11
|
|
|
|
func (at *ArrayType) ItemIsInterface() bool {
|
|
|
|
if !at.IsValid() {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
if _, ok := at.value.([]interface{}); ok {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|