package util import ( "math/rand" "strconv" "time" ) func Uint642String(num uint64) string { return strconv.FormatUint(num, 10) } func StringSecToDuration(str string, defaultValue ...string) time.Duration { result := String2Int64(str) if result == 0 { if defaultValue == nil || len(defaultValue) == 0 { return 0 } result = String2Int64(defaultValue[0]) } return time.Second * time.Duration(result) } func String2Uint64(nums string, defaultValue ...uint64) uint64 { loadDefaultValue := func() uint64 { if defaultValue == nil || len(defaultValue) == 0 { return 0 } return defaultValue[0] } if nums == "" { return loadDefaultValue() } num, err := strconv.ParseUint(nums, 10, 64) if err != nil { // 异常,直接 return loadDefaultValue() } return num } func Int642String(num int64) string { return strconv.FormatInt(num, 10) } func String2Int64(nums string, defaultValue ...int64) int64 { loadDefaultValue := func() int64 { if defaultValue == nil || len(defaultValue) == 0 { return 0 } return defaultValue[0] } if nums == "" { return loadDefaultValue() } num, err := strconv.ParseInt(nums, 10, 64) if err != nil { return loadDefaultValue() } return num } func String2Int(nums string, defaultValue ...int) int { loadDefaultValue := func() int { if defaultValue == nil || len(defaultValue) == 0 { return 0 } return defaultValue[0] } if nums == "" { return loadDefaultValue() } num, err := strconv.ParseInt(nums, 10, 64) if err != nil { return loadDefaultValue() } return int(num) } func Int2String(num int) string { return strconv.FormatInt(int64(num), 10) } func String2Bool(str string, defaultValue ...bool) bool { loadDefaultValue := func() bool { if defaultValue == nil || len(defaultValue) == 0 { return false } return defaultValue[0] } b, err := strconv.ParseBool(str) if err != nil { return loadDefaultValue() } return b } func String2Float64(str string, defaultValue ...float64) float64 { loadDefaultValue := func() float64 { if defaultValue == nil || len(defaultValue) == 0 { return 0 } return defaultValue[0] } b, err := strconv.ParseFloat(str, 64) if err != nil { return loadDefaultValue() } return b } // 除固定值,保留固定小数位 func Float642String(num float64, saveDecimalPoint int) string { return strconv.FormatFloat(num, 'f', saveDecimalPoint, 64) } /** 比率限制,如果=0关闭,如果等于100全量 */ func Rate100(threshold int64) bool { return RateInNum(threshold, 100) } /** 比率限制,如果=0关闭,如果等于100全量 */ func RateInNum(threshold int64, totalSize int64) bool { return threshold > rand.Int63n(totalSize) // 0-99 }