123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package util
- import (
- "fmt"
- "math/rand"
- "reflect"
- "time"
- )
- // IsNull 判断是否为空字符串
- func IsNull(s string) string {
- if s == "" {
- return "0"
- }
- return s
- }
- // IsBlank 判断 reflect.Value 是否为空
- func IsBlank(value reflect.Value) bool {
- switch value.Kind() {
- case reflect.String:
- return value.Len() == 0
- case reflect.Bool:
- return !value.Bool()
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- return value.Int() == 0
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
- return value.Uint() == 0
- case reflect.Float32, reflect.Float64:
- return value.Float() == 0
- case reflect.Interface, reflect.Ptr:
- return value.IsNil()
- }
- return reflect.DeepEqual(value.Interface(), reflect.Zero(value.Type()).Interface())
- }
- func GetNumString(num int64) string {
- if num < 10000 {
- return fmt.Sprintf("%v.00", num)
- } else if num >= 10000 && num < 100000000 {
- mean := float32(num) / float32(10000)
- str := fmt.Sprintf("%.1f", mean)
- return str + "万"
- } else {
- mean := float32(num) / float32(100000000)
- str := fmt.Sprintf("%.1f", mean)
- return str + "亿"
- }
- }
- func GetTimePoionter(t *time.Time) time.Time {
- if t == nil {
- return time.Now()
- } else {
- return *t
- }
- }
- func GetRandomString(l int) string {
- str := "0123456789"
- bytes := []byte(str)
- var result []byte
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- for i := 0; i < l; i++ {
- result = append(result, bytes[r.Intn(len(bytes))])
- }
- return string(result)
- }
- func GetDayNum(inputType string, inputData int) (int, error) {
- result := 0
- switch inputType {
- case "year":
- if inputData < 1 {
- fmt.Println("年份错误!")
- break
- }
- result = inputData
- case "month":
- months := []int{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}
- if (inputData <= 12) && (inputData < 0) {
- fmt.Println("月份错误!")
- break
- }
- result = months[inputData-1]
- case "day":
- if (inputData < 0) && (inputData > 31) {
- fmt.Println("日期错误!")
- break
- }
- result = inputData
- default:
- return 0, fmt.Errorf("输入参数非法:%s", inputType)
- }
- return result, nil
- }
- // RemoveRepByMap 通过map主键唯一的特性过滤重复元素
- func RemoveRepByMap(slc []int64) []int64 {
- if len(slc) == 0 {
- return slc
- }
- var result []int64
- tempMap := map[int64]byte{} // 存放不重复主键
- for _, e := range slc {
- l := len(tempMap)
- tempMap[e] = 0
- if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
- result = append(result, e)
- }
- }
- return result
- }
- func RemoveStrRepByMap(slc []string) []string {
- if len(slc) == 0 {
- return slc
- }
- var result []string
- tempMap := map[string]byte{} // 存放不重复主键
- for _, e := range slc {
- l := len(tempMap)
- tempMap[e] = 0
- if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
- result = append(result, e)
- }
- }
- return result
- }
|