package util import ( "crypto/md5" "encoding/hex" "strconv" "strings" "time" jsoniter "github.com/json-iterator/go" ) // ConfigCompatibleWithStandardLibrary 尝试100%与标准库行为兼容 var jsonT = jsoniter.ConfigCompatibleWithStandardLibrary // 更换日志工具包---转入全局公共类,方便所有包调用 // Interface2String interface{} 对象转换成 string 字符串 func Interface2String(inter interface{}) string { switch inter.(type) { case string: return inter.(string) case int: return strconv.Itoa(inter.(int)) case float64: return strconv.FormatFloat(inter.(float64), 'f', 0, 64) case []uint8: return string(inter.([]uint8)) case int64: return strconv.Itoa(int(inter.(int64))) case time.Time: return inter.(time.Time).Format("2006-01-02 15:04:05") case nil: return "" default: var str string str, _ = jsonT.MarshalToString(inter) return str } } // ParseToInterface 将 []byte 转化为 interface{} func ParseToInterface(bs []byte) interface{} { return jsonT.Get(bs).GetInterface() } func GetJsonTool() jsoniter.API { return jsonT } // StringBuilderAppend 字符串高效拼接,bytes.Builder 也有类似效果 // 大量才有优化效果,如果小量不如使用 + 直接拼 func StringBuilderAppend(s ...string) string { var res strings.Builder for i := 0; i < len(s); i++ { res.WriteString(s[i]) } return res.String() } func MD5WithSalt(text, salt string) string { // 盐值拼接方式可自定义(如 salt + text + salt) hash := md5.Sum([]byte(text + salt)) return hex.EncodeToString(hash[:]) }