helpers.go 953 B

123456789101112131415161718192021222324252627282930313233343536
  1. package helpers
  2. import "reflect"
  3. // Empty 判断变量是否为空
  4. func Empty(val interface{}) bool {
  5. if val == nil {
  6. return true
  7. }
  8. v := reflect.ValueOf(val)
  9. switch v.Kind() {
  10. case reflect.String, reflect.Array:
  11. return v.Len() == 0
  12. case reflect.Map, reflect.Slice:
  13. return v.Len() == 0 || v.IsNil()
  14. case reflect.Bool:
  15. return !v.Bool()
  16. case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  17. return v.Int() == 0
  18. case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  19. return v.Uint() == 0
  20. case reflect.Float32, reflect.Float64:
  21. return v.Float() == 0
  22. case reflect.Interface, reflect.Ptr:
  23. return v.IsNil()
  24. }
  25. return reflect.DeepEqual(val, reflect.Zero(v.Type()).Interface())
  26. }
  27. // FirstElement 安全地获取 args[0],避免 panic: runtime error: index out of range
  28. func FirstElement(args []string) string {
  29. if len(args) > 0 {
  30. return args[0]
  31. }
  32. return ""
  33. }