helpers.go 896 B

12345678910111213141516171819202122232425262728293031
  1. // Package helpers 存放辅助方法
  2. package helpers
  3. import (
  4. "reflect"
  5. )
  6. // Empty 类似于 PHP 的 empty() 函数
  7. func Empty(val any) bool {
  8. if val == nil {
  9. return true
  10. }
  11. v := reflect.ValueOf(val)
  12. switch v.Kind() {
  13. case reflect.String, reflect.Array:
  14. return v.Len() == 0
  15. case reflect.Map, reflect.Slice:
  16. return v.Len() == 0 || v.IsNil()
  17. case reflect.Bool:
  18. return !v.Bool()
  19. case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  20. return v.Int() == 0
  21. case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  22. return v.Uint() == 0
  23. case reflect.Float32, reflect.Float64:
  24. return v.Float() == 0
  25. case reflect.Interface, reflect.Ptr:
  26. return v.IsNil()
  27. }
  28. return reflect.DeepEqual(val, reflect.Zero(v.Type()).Interface())
  29. }