github.com/sohaha/zlsgo@v1.7.13-0.20240501141223-10dd1a906f76/ztype/type.go (about)

     1  package ztype
     2  
     3  import (
     4  	"time"
     5  )
     6  
     7  type Type struct {
     8  	v interface{}
     9  }
    10  
    11  func New(v interface{}) Type {
    12  	switch val := v.(type) {
    13  	case Type:
    14  		return val
    15  	default:
    16  		return Type{v: v}
    17  	}
    18  }
    19  
    20  func (t Type) Value() interface{} {
    21  	return t.v
    22  }
    23  
    24  func (t Type) Get(path string) Type {
    25  	v, ok := parsePath(path, t.v)
    26  	if !ok {
    27  		return Type{}
    28  	}
    29  	return New(v)
    30  }
    31  
    32  func (t Type) String(def ...string) string {
    33  	if t.v == nil && len(def) > 0 {
    34  		return def[0]
    35  	}
    36  	return ToString(t.v)
    37  }
    38  
    39  func (t Type) Bytes(def ...[]byte) []byte {
    40  	if t.v == nil && len(def) > 0 {
    41  		return def[0]
    42  	}
    43  	return ToBytes(t.v)
    44  }
    45  
    46  func (t Type) Bool(def ...bool) bool {
    47  	if t.v == nil && len(def) > 0 {
    48  		return def[0]
    49  	}
    50  	return ToBool(t.v)
    51  }
    52  
    53  func (t Type) Int(def ...int) int {
    54  	if t.v == nil && len(def) > 0 {
    55  		return def[0]
    56  	}
    57  	return ToInt(t.v)
    58  }
    59  
    60  func (t Type) Int8(def ...int8) int8 {
    61  	if t.v == nil && len(def) > 0 {
    62  		return def[0]
    63  	}
    64  	return ToInt8(t.v)
    65  }
    66  
    67  func (t Type) Int16(def ...int16) int16 {
    68  	if t.v == nil && len(def) > 0 {
    69  		return def[0]
    70  	}
    71  	return ToInt16(t.v)
    72  }
    73  
    74  func (t Type) Int32(def ...int32) int32 {
    75  	if t.v == nil && len(def) > 0 {
    76  		return def[0]
    77  	}
    78  	return ToInt32(t.v)
    79  }
    80  
    81  func (t Type) Int64(def ...int64) int64 {
    82  	if t.v == nil && len(def) > 0 {
    83  		return def[0]
    84  	}
    85  	return ToInt64(t.v)
    86  }
    87  
    88  func (t Type) Uint(def ...uint) uint {
    89  	if t.v == nil && len(def) > 0 {
    90  		return def[0]
    91  	}
    92  	return ToUint(t.v)
    93  }
    94  
    95  func (t Type) Uint8(def ...uint8) uint8 {
    96  	if t.v == nil && len(def) > 0 {
    97  		return def[0]
    98  	}
    99  	return ToUint8(t.v)
   100  }
   101  
   102  func (t Type) Uint16(def ...uint16) uint16 {
   103  	if t.v == nil && len(def) > 0 {
   104  		return def[0]
   105  	}
   106  	return ToUint16(t.v)
   107  }
   108  
   109  func (t Type) Uint32(def ...uint32) uint32 {
   110  	if t.v == nil && len(def) > 0 {
   111  		return def[0]
   112  	}
   113  	return ToUint32(t.v)
   114  }
   115  
   116  func (t Type) Uint64(def ...uint64) uint64 {
   117  	if t.v == nil && len(def) > 0 {
   118  		return def[0]
   119  	}
   120  	return ToUint64(t.v)
   121  }
   122  
   123  func (t Type) Float32(def ...float32) float32 {
   124  	if t.v == nil && len(def) > 0 {
   125  		return def[0]
   126  	}
   127  	return ToFloat32(t.v)
   128  }
   129  
   130  func (t Type) Float64(def ...float64) float64 {
   131  	if t.v == nil && len(def) > 0 {
   132  		return def[0]
   133  	}
   134  	return ToFloat64(t.v)
   135  }
   136  
   137  func (t Type) Maps() Maps {
   138  	return t.Slice().Maps()
   139  }
   140  
   141  func (t Type) Slice(noConv ...bool) SliceType {
   142  	if t.v == nil {
   143  		return SliceType{}
   144  	}
   145  	return ToSlice(t.v, noConv...)
   146  }
   147  
   148  func (t Type) SliceValue(noConv ...bool) []interface{} {
   149  	return t.Slice(noConv...).Value()
   150  }
   151  
   152  func (t Type) SliceString(noConv ...bool) []string {
   153  	return t.Slice(noConv...).String()
   154  }
   155  
   156  func (t Type) SliceInt(noConv ...bool) []int {
   157  	return t.Slice(noConv...).Int()
   158  }
   159  
   160  func (t Type) Exists() bool {
   161  	return t.v != nil
   162  }
   163  
   164  func (t Type) Time(format ...string) (time.Time, error) {
   165  	return ToTime(t.v, format...)
   166  }
   167  
   168  func (t Type) Map() Map {
   169  	return ToMap(t.v)
   170  }