1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package utils
- import (
- "github.com/gogf/gf/internal/empty"
- "reflect"
- )
- // IsNil checks whether `value` is nil.
- func IsNil(value interface{}) bool {
- return value == nil
- }
- // IsEmpty checks whether `value` is empty.
- func IsEmpty(value interface{}) bool {
- return empty.IsEmpty(value)
- }
- // IsInt checks whether `value` is type of int.
- func IsInt(value interface{}) bool {
- switch value.(type) {
- case int, *int, int8, *int8, int16, *int16, int32, *int32, int64, *int64:
- return true
- }
- return false
- }
- // IsUint checks whether `value` is type of uint.
- func IsUint(value interface{}) bool {
- switch value.(type) {
- case uint, *uint, uint8, *uint8, uint16, *uint16, uint32, *uint32, uint64, *uint64:
- return true
- }
- return false
- }
- // IsFloat checks whether `value` is type of float.
- func IsFloat(value interface{}) bool {
- switch value.(type) {
- case float32, *float32, float64, *float64:
- return true
- }
- return false
- }
- // IsSlice checks whether `value` is type of slice.
- func IsSlice(value interface{}) bool {
- var (
- reflectValue = reflect.ValueOf(value)
- reflectKind = reflectValue.Kind()
- )
- for reflectKind == reflect.Ptr {
- reflectValue = reflectValue.Elem()
- }
- switch reflectKind {
- case reflect.Slice, reflect.Array:
- return true
- }
- return false
- }
- // IsMap checks whether `value` is type of map.
- func IsMap(value interface{}) bool {
- var (
- reflectValue = reflect.ValueOf(value)
- reflectKind = reflectValue.Kind()
- )
- for reflectKind == reflect.Ptr {
- reflectValue = reflectValue.Elem()
- }
- switch reflectKind {
- case reflect.Map:
- return true
- }
- return false
- }
- // IsStruct checks whether `value` is type of struct.
- func IsStruct(value interface{}) bool {
- var (
- reflectValue = reflect.ValueOf(value)
- reflectKind = reflectValue.Kind()
- )
- for reflectKind == reflect.Ptr {
- reflectValue = reflectValue.Elem()
- reflectKind = reflectValue.Kind()
- }
- switch reflectKind {
- case reflect.Struct:
- return true
- }
- return false
- }
|