helpers.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Package helpers 存放辅助方法
  2. package helpers
  3. import (
  4. "fmt"
  5. "reflect"
  6. "time"
  7. )
  8. // Empty 类似于 PHP 的 empty() 函数
  9. func Empty(val any) bool {
  10. if val == nil {
  11. return true
  12. }
  13. v := reflect.ValueOf(val)
  14. switch v.Kind() {
  15. case reflect.String, reflect.Array:
  16. return v.Len() == 0
  17. case reflect.Map, reflect.Slice:
  18. return v.Len() == 0 || v.IsNil()
  19. case reflect.Bool:
  20. return !v.Bool()
  21. case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  22. return v.Int() == 0
  23. case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  24. return v.Uint() == 0
  25. case reflect.Float32, reflect.Float64:
  26. return v.Float() == 0
  27. case reflect.Interface, reflect.Ptr:
  28. return v.IsNil()
  29. }
  30. return reflect.DeepEqual(val, reflect.Zero(v.Type()).Interface())
  31. }
  32. // MicrosecondsStr 将 time.Duration 类型(nano seconds 为单位)
  33. // 输出为小数点后 3 位的 ms (microsecond 毫秒,千分之一秒)
  34. func MicrosecondsStr(elapsed time.Duration) string {
  35. return fmt.Sprintf("%.3fms", float64(elapsed.Nanoseconds())/1e6)
  36. }