Documentation
¶
Overview ¶
Package u2 提供AES加密解密功能,支持ECB和CBC模式,以及PKCS5/PKCS7填充
Package u2 提供并发控制相关功能,支持QPS限制、最大执行时间等控制。
该包主要用于控制并发任务的执行频率,防止系统过载。主要功能包括: - QPS(每秒查询数)限制 - 最大执行时间控制 - 并发任务管理
Package u2 提供通用工具函数集合,包括加密、并发控制等功能。
Index ¶
- Variables
- func AesDecryptCBC(s string, key string, vi string) (string, error)
- func AesDecryptCBCWithPadding(s string, key string, vi string, paddingType PaddingType) (string, error)
- func AesDecryptECB(s string, key string) (string, error)
- func AesDecryptECBWithPadding(s string, key string, paddingType PaddingType) (string, error)
- func AesEncryptCBC(s string, key string, vi string) (string, error)
- func AesEncryptCBCWithPadding(s string, key string, vi string, paddingType PaddingType) (string, error)
- func AesEncryptECB(s string, key string) (string, error)
- func AesEncryptECBWithPadding(s string, key string, paddingType PaddingType) (string, error)
- func AppendFile(filename, content string) error
- func AppendFileOnce(filename, content string)
- func AppendFileWithTimes(filename, content string, times int) error
- func B2I(b []byte, i interface{}) error
- func Base64Decode(s string, gzipForm bool) (string, error)
- func Base64Encode(s string, gzipForm bool) (string, error)
- func CloseAllFiles()
- func DeepEqual(left, right interface{}) bool
- func ExistFile(filename string) bool
- func ForSlice(list interface{}, runningNum int, f func(int, interface{}) bool) bool
- func ForSliceWithQPS(list interface{}, runningNum int, Max_QPS int, f func(int, interface{}) bool) bool
- func ForWithNum(startNum, endNum, runningNum int, f func(int) bool) bool
- func ForWithNumAndQPS(startNum, endNum, runningNum, Max_QPS int, f func(int) bool) bool
- func GetNoRepeatList(list []string, removeEmpty bool) []string
- func HmacSha256(data string, secret string) (string, error)
- func HtmlDecode(input string) string
- func HtmlEncode(input string) string
- func I2S(i interface{}) string
- func Interface2InterfaceSlice(slice interface{}) []interface{}
- func Json2Interface(b []byte, i interface{}) error
- func JsonPretty(content string) string
- func JsonPretty4Byte(content []byte) string
- func LoadJson(path string, dist interface{}) error
- func Md5(s string) string
- func Md5_16(s string) string
- func NewError(key string, val ...string) error
- func NewHmacSha256(secret string) hash.Hash
- func Open(link string)
- func RandSeq(n int) string
- func ReadFile(filename string) []byte
- func ReadFileLine(filename string, callback func(line string))
- func ReadFileStringSlice(filename string, seq string) []string
- func RemoveFile(filename string) error
- func S2I(s string, i interface{}) error
- func SliceBeContains(key string, slice []string, ignoreAa bool) bool
- func SliceContains(slice []string, key string, ignoreAa bool) bool
- func SliceHas(slice []string, key string, ignoreAa bool) bool
- func Struct2JSON(t interface{}, pretty bool) (string, error)
- func Struct2JsonNoError(t interface{}, pretty bool) string
- func TimeFormat2timestamp(settime string, isMS bool) int64
- func TimeFormat2timestampString(settime string, isMS bool) string
- func UUID() string
- func UrlDecode(s string) (string, error)
- func UrlEncode(s string) string
- type Detail
- type FileHandle
- type ForConfig
- type JsonDiff
- type PaddingType
- type TimeParse
- func (t TimeParse) Add(d time.Duration) TimeParse
- func (t TimeParse) DayEnd() TimeParse
- func (t TimeParse) DayStart() TimeParse
- func (t TimeParse) TimeFormat(format string) string
- func (t TimeParse) TimeFormatDefault() string
- func (t TimeParse) Unix() int64
- func (t TimeParse) Unix2String() string
- func (t TimeParse) UnixMilli() int64
- func (t TimeParse) UnixMilli2Strig() string
- func (t TimeParse) UnixNano() int64
Constants ¶
This section is empty.
Variables ¶
var TimeLayout string = "2006-01-02 15:04:05"
Functions ¶
func AesDecryptCBC ¶
AesDecryptCBC 使用AES-CBC模式解密数据,默认使用PKCS7填充
参数:
- s: 需要解密的Base64编码字符串
- key: 解密密钥
- vi: 初始化向量
返回值:
- string: 解密后的原始字符串
- error: 解密过程中发生的错误
func AesDecryptCBCWithPadding ¶ added in v0.0.2
func AesDecryptCBCWithPadding(s string, key string, vi string, paddingType PaddingType) (string, error)
AesDecryptCBCWithPadding 使用AES-CBC模式解密数据,并支持选择填充方式
参数:
- s: 需要解密的Base64编码字符串
- key: 解密密钥
- vi: 初始化向量
- paddingType: 填充类型(PKCS5或PKCS7)
返回值:
- string: 解密后的原始字符串
- error: 解密过程中发生的错误
func AesDecryptECB ¶ added in v0.0.2
AesDecryptECB 使用AES-ECB模式解密数据,默认使用PKCS7填充
参数:
- s: 需要解密的Base64编码字符串
- key: 解密密钥
返回值:
- string: 解密后的原始字符串
- error: 解密过程中发生的错误
func AesDecryptECBWithPadding ¶ added in v0.0.2
func AesDecryptECBWithPadding(s string, key string, paddingType PaddingType) (string, error)
AesDecryptECBWithPadding 使用AES-ECB模式解密数据,并支持选择填充方式
参数:
- s: 需要解密的Base64编码字符串
- key: 解密密钥
- paddingType: 填充类型(PKCS5或PKCS7)
返回值:
- string: 解密后的原始字符串
- error: 解密过程中发生的错误
func AesEncryptCBC ¶
AesEncryptCBC 使用AES-CBC模式加密数据,默认使用PKCS7填充
参数:
- s: 需要加密的字符串
- key: 加密密钥
- vi: 初始化向量
返回值:
- string: 加密后的Base64编码字符串
- error: 加密过程中发生的错误
func AesEncryptCBCWithPadding ¶ added in v0.0.2
func AesEncryptCBCWithPadding(s string, key string, vi string, paddingType PaddingType) (string, error)
AesEncryptCBCWithPadding 使用AES-CBC模式加密数据,并支持选择填充方式
参数:
- s: 需要加密的字符串
- key: 加密密钥
- vi: 初始化向量
- paddingType: 填充类型(PKCS5或PKCS7)
返回值:
- string: 加密后的Base64编码字符串
- error: 加密过程中发生的错误
func AesEncryptECB ¶ added in v0.0.2
AesEncryptECB 使用AES-ECB模式加密数据,默认使用PKCS7填充
参数:
- s: 需要加密的字符串
- key: 加密密钥
返回值:
- string: 加密后的Base64编码字符串
- error: 加密过程中发生的错误
func AesEncryptECBWithPadding ¶ added in v0.0.2
func AesEncryptECBWithPadding(s string, key string, paddingType PaddingType) (string, error)
AesEncryptECBWithPadding 使用AES-ECB模式加密数据,并支持选择填充方式
参数:
- s: 需要加密的字符串
- key: 加密密钥
- paddingType: 填充类型(PKCS5或PKCS7)
返回值:
- string: 加密后的Base64编码字符串
- error: 加密过程中发生的错误
func AppendFile ¶
AppendFile 追加内容到指定文件,自动管理文件句柄
参数:
- filename: 目标文件名
- content: 要追加的内容
返回值:
- error: 操作过程中发生的错误
注意:
文件句柄会在1秒不活动后自动关闭,如果写入失败会重试3次
func AppendFileOnce ¶
func AppendFileOnce(filename, content string)
AppendFileOnce 一次性追加内容到文件,不保持文件句柄
参数:
- filename: 目标文件名
- content: 要追加的内容
func AppendFileWithTimes ¶ added in v0.0.2
AppendFileWithTimes 带重试机制的追加文件操作
参数:
- filename: 目标文件名
- content: 要追加的内容
- times: 最大重试次数
返回值:
- error: 操作过程中发生的错误
func B2I ¶
B2I 将JSON字节转换为接口
参数:
b - 要转换的JSON字节数组 i - 目标接口指针
返回值:
error - 转换过程中可能发生的错误
注意:
该函数是Json2Interface的别名,提供更直观的函数命名
示例:
var result map[string]interface{} err := B2I([]byte(`{"key":"value"}`), &result)
func Base64Decode ¶
Base64Decode 对Base64编码的字符串进行解码,可选择是否进行GZIP解压缩
参数:
- s: 需要解码的Base64字符串
- gzipForm: 是否启用GZIP解压缩
返回值:
- string: 解码后的原始字符串
- error: 解码过程中发生的错误
func Base64Encode ¶
Base64Encode 对字符串进行Base64编码,可选择是否进行GZIP压缩
参数:
- s: 需要编码的原始字符串
- gzipForm: 是否启用GZIP压缩
返回值:
- string: 编码后的Base64字符串
- error: 编码过程中发生的错误
func DeepEqual ¶
func DeepEqual(left, right interface{}) bool
DeepEqual 深度比较两个对象是否相等 DeepEqual 深度比较两个值的相等性 使用reflect.DeepEqual实现,处理各种嵌套类型的比较 参数:
left - 要比较的第一个值 right - 要比较的第二个值
返回值:
bool - 是否深度相等
func ForSlice ¶
ForSlice 并发处理切片。
参数:
- list: 要处理的切片
- runningNum: 最大并发数
- f: 处理函数,返回false表示停止处理
返回值:
- bool: 是否成功完成所有处理
func ForSliceWithQPS ¶ added in v0.0.2
func ForSliceWithQPS(list interface{}, runningNum int, Max_QPS int, f func(int, interface{}) bool) bool
ForSliceWithQPS 带QPS限制的并发处理。
参数:
- list: 要处理的切片
- runningNum: 最大并发数
- Max_QPS: 最大QPS限制
- f: 处理函数,返回false表示停止处理
返回值:
- bool: 是否成功完成所有处理
func ForWithNum ¶
ForWithNum 并发处理数字范围。
参数:
- startNum: 起始数字
- endNum: 结束数字
- runningNum: 最大并发数
- f: 处理函数,返回false表示停止处理
返回值:
- bool: 是否成功完成所有处理
func ForWithNumAndQPS ¶ added in v0.0.2
ForWithNumAndQPS 并发处理数字范围,带QPS限制。
参数:
- startNum: 起始数字
- endNum: 结束数字
- runningNum: 最大并发数
- Max_QPS: 最大QPS限制
- f: 处理函数,返回false表示停止处理
返回值:
- bool: 是否成功完成所有处理
func GetNoRepeatList ¶
GetNoRepeatList 获取去重后的字符串切片
参数:
list - 要处理的字符串切片 removeEmpty - 是否移除空字符串
返回值:
[]string - 去重后的字符串切片
注意:
- 使用map实现去重,不保证顺序
- 当removeEmpty为true时,会移除所有空字符串
示例:
list := []string{"apple", "banana", "apple", "", "Banana"} result := GetNoRepeatList(list, true) // 返回["apple", "banana", "Banana"]
func HmacSha256 ¶
HmacSha256 使用HMAC-SHA256算法对数据进行加密。
参数:
- data: 要加密的原始数据字符串
- secret: 用于加密的密钥字符串
返回值:
- string: 加密后的十六进制字符串
- error: 如果加密过程中发生错误,则返回错误信息
示例:
result, err := HmacSha256("my data", "my secret") if err != nil { log.Fatal(err) } fmt.Println(result)
func HtmlDecode ¶ added in v0.0.2
HtmlDecode 将包含HTML实体的字符串转换为普通字符串。
参数:
input - 包含HTML实体的字符串
返回值:
转换后的普通字符串
示例:
decoded := HtmlDecode("<div>") // 返回 "<div>"
func HtmlEncode ¶ added in v0.0.2
HtmlEncode 将普通字符串转换为包含HTML实体的字符串。
参数:
input - 需要编码的普通字符串
返回值:
包含HTML实体的字符串
示例:
encoded := HtmlEncode("<div>") // 返回 "<div>"
func I2S ¶
func I2S(i interface{}) string
I2S 将接口转换为JSON字符串
参数:
i - 要转换的接口
返回值:
string - 转换后的JSON字符串
注意:
该函数是Struct2JsonNoError的快捷方式,默认不格式化输出
示例:
data := map[string]interface{}{"key": "value"} jsonStr := I2S(data)
func Interface2InterfaceSlice ¶ added in v0.0.2
func Interface2InterfaceSlice(slice interface{}) []interface{}
Interface2InterfaceSlice 将任意类型的切片转换为[]interface{}类型
参数:
slice - 要转换的任意类型切片
返回值:
[]interface{} - 转换后的切片
注意:
如果输入不是切片类型,返回空切片
示例:
intSlice := []int{1, 2, 3} result := Interface2InterfaceSlice(intSlice) // 返回[]interface{}{1, 2, 3}
func Json2Interface ¶
Json2Interface 将JSON字节反序列化为接口
参数:
b - 要反序列化的JSON字节数组 i - 目标接口指针
返回值:
error - 反序列化过程中可能发生的错误
示例:
var user User err := Json2Interface([]byte(`{"name":"Bob"}`), &user)
func JsonPretty ¶
JsonPretty 格式化JSON字符串
参数:
content - 要格式化的JSON字符串
返回值:
格式化后的JSON字符串
示例:
pretty := JsonPretty(`{"name":"John"}`) // 返回格式化后的JSON
func JsonPretty4Byte ¶
JsonPretty4Byte 格式化JSON字节数组
参数:
content - 要格式化的JSON字节数组
返回值:
格式化后的JSON字符串
示例:
pretty := JsonPretty4Byte([]byte(`{"name":"John"}`)) // 返回格式化后的JSON
func Md5 ¶
Md5 计算字符串的32位小写MD5哈希值
参数:
s - 要计算哈希的字符串
返回值:
32位小写MD5字符串
示例:
hash := Md5("hello") // 返回 "5d41402abc4b2a76b9719d911017c592"
func Md5_16 ¶
Md5_16 计算字符串的16位小写MD5哈希值
参数:
s - 要计算哈希的字符串
返回值:
16位小写MD5字符串
示例:
hash := Md5_16("hello") // 返回 "c4b2a76b9719d911"
func NewError ¶
NewError 创建一个自定义错误对象
该函数用于生成包含详细信息的错误对象,格式为: "<key>异常,具体值:<val1>,<val2>,..."
参数:
- key: 错误类型或错误描述的关键字
- val: 可选的错误详细信息,可以传入多个值
返回值:
- error: 包含格式化错误信息的error对象
示例:
err := NewError("文件读取", "file.txt", "权限不足") // 输出: "文件读取异常,具体值:file.txt,权限不足"
func NewHmacSha256 ¶ added in v0.0.2
NewHmacSha256 创建一个新的HMAC-SHA256实例。
参数:
- secret: 用于加密的密钥字符串
返回值:
- hash.Hash: HMAC-SHA256实例
func Open ¶
func Open(link string)
Open 在默认应用程序中打开指定的链接或文件夹
参数:
link - 要打开的URL或文件路径。可以是: - 网页地址(如 "https://example.com") - 本地文件路径(如 "/path/to/file") - 文件夹路径(如 "/path/to/folder")
注意:
- 该函数目前仅支持Linux和macOS系统
- 在Linux系统上使用xdg-open命令
- 在macOS系统上使用open命令
- 在其他操作系统上会记录不支持的信息
示例:
Open("https://example.com") // 在默认浏览器中打开网页 Open("/path/to/file.txt") // 用默认应用程序打开文件 Open("/path/to/folder") // 在文件管理器中打开文件夹
func RandSeq ¶
RandSeq 生成指定长度的随机字符串,包含数字和大小写字母
参数:
n - 要生成的字符串长度
返回值:
string - 生成的随机字符串
注意:
- 使用math/rand包生成随机数,需确保已调用rand.Seed()
- 生成的字符串包含以下字符集: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
示例:
rand.Seed(time.Now().UnixNano()) randomStr := RandSeq(10) // 生成10位随机字符串
func ReadFileStringSlice ¶
ReadFileStringSlice 将文件内容按指定分隔符分割成字符串切片
参数:
- filename: 要读取的文件名
- seq: 分隔符,默认为换行符
返回值:
- []string: 分割后的字符串切片
func S2I ¶
S2I 将JSON字符串转换为接口
参数:
s - 要转换的JSON字符串 i - 目标接口指针
返回值:
error - 转换过程中可能发生的错误
注意:
该函数是Json2Interface的快捷方式,自动处理字符串到字节数组的转换
示例:
var config Config err := S2I(`{"setting":"value"}`, &config)
func SliceBeContains ¶
SliceBeContains 检查字符串是否包含切片中的任何值
参数:
key - 要搜索的字符串 slice - 包含要查找的字符串的切片 ignoreAa - 是否忽略大小写
返回值:
bool - 如果字符串包含切片中的任何值返回true,否则返回false
注意:
当ignoreAa为true时,使用不区分大小写的比较
示例:
list := []string{"apple", "banana", "orange"} found := SliceBeContains("I like banana", list, true) // 返回true
func SliceContains ¶
SliceContains 检查字符串切片中是否包含指定子字符串
参数:
slice - 要搜索的字符串切片 key - 要查找的子字符串 ignoreAa - 是否忽略大小写
返回值:
bool - 如果找到包含子字符串的项返回true,否则返回false
注意:
当ignoreAa为true时,使用不区分大小写的比较
示例:
list := []string{"apple pie", "Banana bread", "Orange juice"} found := SliceContains(list, "BANANA", true) // 返回true
func SliceHas ¶
SliceHas 检查字符串切片中是否包含指定的字符串
参数:
slice - 要搜索的字符串切片 key - 要查找的字符串 ignoreAa - 是否忽略大小写
返回值:
bool - 如果找到匹配项返回true,否则返回false
注意:
当ignoreAa为true时,使用不区分大小写的比较
示例:
list := []string{"apple", "Banana", "Orange"} found := SliceHas(list, "banana", true) // 返回true
func Struct2JSON ¶
Struct2JSON 将结构体转换为JSON字符串
参数:
t - 要转换的结构体或值 pretty - 是否格式化输出
返回值:
string - 转换后的JSON字符串 error - 转换过程中可能发生的错误
示例:
type User struct { Name string `json:"name"` Age int `json:"age"` } user := User{Name: "John", Age: 30} jsonStr, err := Struct2JSON(user, true)
func Struct2JsonNoError ¶
Struct2JsonNoError 将结构体转换为JSON字符串,忽略错误
参数:
t - 要转换的结构体或值 pretty - 是否格式化输出
返回值:
string - 转换后的JSON字符串
注意:
该函数会忽略转换过程中发生的错误,适用于确定不会出错的情况
示例:
type User struct { Name string `json:"name"` } user := User{Name: "Alice"} jsonStr := Struct2JsonNoError(user, false)
func TimeFormat2timestamp ¶
TimeFormat2timestamp 将格式化的时间字符串转换为时间戳
参数:
settime - 格式化的时间字符串,格式为"2006-01-02 15:04:05" isMS - 是否返回毫秒级时间戳
返回值:
int64 - 时间戳,如果解析失败返回-1
注意:
- 使用time.Parse进行解析,使用本地时区
- 当isMS为true时,返回毫秒级时间戳
- 解析失败时会记录错误日志
示例:
timestamp := TimeFormat2timestamp("2023-01-01 12:00:00", true) // 返回1672531200000
func TimeFormat2timestampString ¶
TimeFormat2timestampString 将格式化的时间字符串转换为字符串形式的时间戳
参数:
settime - 格式化的时间字符串,格式为"2006-01-02 15:04:05" isMS - 是否返回毫秒级时间戳
返回值:
string - 字符串形式的时间戳,如果解析失败返回"-1"
注意:
- 内部调用TimeFormat2timestamp函数
- 使用strconv.FormatInt将int64转换为字符串
示例:
timestampStr := TimeFormat2timestampString("2023-01-01 12:00:00", true) // 返回"1672531200000"
func UUID ¶
func UUID() string
UUID 生成符合RFC 4122标准的版本4 UUID
返回值:
string - 生成的UUID字符串,格式为"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
注意:
- 使用crypto/rand包生成安全的随机数
- 符合UUID版本4规范: - 第13位设置为'4'表示版本4 - 第17位设置为'8'、'9'、'a'或'b'表示变体
- 生成的UUID是随机的,不是基于时间或MAC地址的
示例:
id := UUID() // 生成类似"f47ac10b-58cc-4372-a567-0e02b2c3d479"的UUID
Types ¶
type Detail ¶
type Detail struct { Left string `json:"left"` // 左侧值(被比较的原始值) Right string `json:"right"` // 右侧值(比较的目标值) Key string `json:"key"` // 差异点的JSON路径 Style string `json:"style"` // 差异类型:change/delete/add/type/error Ignore bool `json:"ignore"` // 是否忽略该差异 }
Detail 表示差异比较的详细信息 用于记录JSON结构比较中的具体差异点
type FileHandle ¶
type FileHandle struct {
// contains filtered or unexported fields
}
FileHandle 封装文件句柄和定时器
type ForConfig ¶
type ForConfig struct { // 公共配置参数(创建时设置) MaxRunSec int `comment:"最大运行时间(秒),0表示无限制"` // 最大运行时间(秒) LimitTimes int `comment:"总执行次数限制,0表示无限制"` // 总执行次数限制 MaxQPS int `comment:"每秒最大请求数"` // 最大QPS PrintQPS bool `comment:"是否打印QPS统计信息"` // 是否打印QPS信息 Debug bool `comment:"启用调试模式"` // 调试模式 // contains filtered or unexported fields }
ForConfig 定义并发控制配置参数和运行时状态 注意:公共字段应在创建实例时设置,运行时修改可能不会生效
func NewFor ¶ added in v0.0.2
NewFor 创建并发控制器实例 参数:
config - 配置参数,如果为nil则使用默认配置
返回值:
*ForConfig - 初始化完成的并发控制器实例
默认配置:
MaxQPS = 100
func (*ForConfig) Num ¶
Num 并发处理数字范围 参数:
start - 起始数字(包含) end - 结束数字(包含) concurrency - 最大并发goroutine数量 fn - 处理函数,参数为当前数字,返回false表示提前终止
返回值:
bool - true表示全部完成,false表示被提前终止
func (*ForConfig) ReleaseToken ¶ added in v0.0.4
func (c *ForConfig) ReleaseToken()
ReleaseToken 将令牌放回令牌桶中
注意:
- 该方法应在任务执行完成后调用
- 如果令牌桶已满,多余的令牌将被丢弃
- 该方法是线程安全的
type JsonDiff ¶
type JsonDiff struct { HasDiff bool // 是否存在差异 Details []*Detail `json:"details"` // 差异细节列表 Cost string `json:"cost"` // 比较耗时(格式化字符串) Ignore []string `json:"ignore"` // 忽略的差异列表 KeyMap map[string]string `json:"keyMap"` // 键名映射表(左->右) Speed int `json:"speed"` // 比较速度等级(1-5) // contains filtered or unexported fields }
JsonDiff 记录JSON差异比较的结果和状态 包含完整的比较结果和运行时状态信息
func JsonComparePlus ¶
func JsonComparePlus(left, right interface{}, keyMap map[string]string, valueMap map[string]func(left, right interface{}) bool, speed int) JsonDiff
JsonComparePlus 比较两个 json 结构的不同 ¶
- left: 左边的 json 结构
- right: 右边的 json 结构
- keyMap: key 映射,key 是左边的 key,value 是右边的 key
- valueMap: value 映射,key 是 key,value 是比较函数,返回 true 表示相等,false 表示不相等;如果是 nil,使用默认的比较函数,默认是 DeepEqual;left和right是数字时,请转成 int64 比较
func JsonCompareWithIgnore ¶
JsonCompareWithIgnore 比较两个JSON结构,忽略指定路径的差异 参数:
left - 左侧JSON数据 right - 右侧JSON数据 ignoreKeys - 要忽略的路径列表
返回值:
JsonDiff - 差异比较结果
func (JsonDiff) DetailsString ¶
DetailsString 以字符串的形式返回比较的细节
func (JsonDiff) Ignores ¶
Ignores 忽略某些字段的比较 keys: 要忽略的字段名, 可以是多个;$.xxx.xx list:$.xxx[x],写死 x 就行 如果需要指定类型:$.xxx.xx:type,这里添加:,后面的 type 被指定,可多个:,不然默认全部忽略 类型有:change,delete,add,type,error,all,其他默认不忽略 Ignores 设置要忽略的差异规则 参数:
keys - 忽略规则列表,支持格式: "json.path" - 忽略该路径所有差异 "json.path:style" - 忽略特定类型的差异
返回值:
JsonDiff - 新的差异比较实例(不可变设计)
注意:多次调用会合并忽略规则
func (JsonDiff) PrintAll ¶
func (d JsonDiff) PrintAll()
PrintAll 打印所有的比较结果 PrintAll 打印完整的差异报告到标准输出 包含所有差异细节和统计信息,适合调试使用
func (JsonDiff) Result2File ¶
Result2File 将比较结果写入文件
func (JsonDiff) ResultString ¶
ResultString 将比较结果以字符串的形式返回
type PaddingType ¶ added in v0.0.2
type PaddingType int
PaddingType 定义填充类型常量
const ( // PaddingPKCS5 表示使用PKCS5填充,固定块大小为8字节 PaddingPKCS5 PaddingType = iota // PaddingPKCS7 表示使用PKCS7填充,块大小可变(1-255字节) PaddingPKCS7 )
type TimeParse ¶
type TimeParse int64
func TimeCommon ¶
TimeCommon 根据纳秒时间戳创建TimeParse对象
参数:
t - 纳秒级时间戳
返回值:
TimeParse - 表示指定时间的TimeParse对象
示例:
tp := TimeCommon(1672531200000000000) // 创建表示2023-01-01 00:00:00的TimeParse对象
func TimeFormat ¶
TimeFormat 根据格式化的时间字符串创建TimeParse对象
参数:
format - 格式化的时间字符串,格式为"2006-01-02 15:04:05"
返回值:
TimeParse - 表示指定时间的TimeParse对象
注意:
- 如果解析失败,会使用当前时间并记录错误日志
- 使用time.Parse进行解析
示例:
tp := TimeFormat("2023-01-01 12:00:00") // 创建表示2023-01-01 12:00:00的TimeParse对象
func TimeNow ¶
func TimeNow() TimeParse
TimeNow 获取当前时间的TimeParse对象
返回值:
TimeParse - 表示当前时间的TimeParse对象
注意:
使用time.Now().UnixNano()获取当前时间的纳秒表示
示例:
now := TimeNow() // 返回当前时间的TimeParse对象
func (TimeParse) Add ¶
Add 为TimeParse对象增加指定的时间间隔
参数:
d - 要增加的时间间隔
返回值:
TimeParse - 增加时间间隔后的新TimeParse对象
示例:
newTime := tp.Add(time.Hour) // 增加1小时
func (TimeParse) DayEnd ¶
DayEnd 获取TimeParse对象所在天的结束时间
返回值:
TimeParse - 表示当天23:59:59.99的TimeParse对象
示例:
end := tp.DayEnd() // 返回当天23:59:59.99的TimeParse对象
func (TimeParse) DayStart ¶
DayStart 获取TimeParse对象所在天的开始时间
返回值:
TimeParse - 表示当天00:00:00的TimeParse对象
示例:
start := tp.DayStart() // 返回当天00:00:00的TimeParse对象
func (TimeParse) TimeFormat ¶
TimeFormat 将TimeParse对象格式化为指定格式的字符串
参数:
format - 时间格式字符串
返回值:
string - 格式化后的时间字符串
示例:
str := tp.TimeFormat("2006-01-02") // 返回"2023-01-01"
func (TimeParse) TimeFormatDefault ¶
TimeFormatDefault 将TimeParse对象格式化为默认格式的字符串
返回值:
string - 格式化后的时间字符串,格式为"2006-01-02 15:04:05"
示例:
str := tp.TimeFormatDefault() // 返回"2023-01-01 12:00:00"
func (TimeParse) Unix ¶
Unix 获取TimeParse对象的秒级时间戳
返回值:
int64 - 秒级时间戳
示例:
timestamp := tp.Unix() // 返回秒级时间戳
func (TimeParse) Unix2String ¶ added in v0.0.4
Unix 获取TimeParse对象的秒级时间戳
返回值:
int64 - 秒级时间戳
示例:
timestamp := tp.Unix() // 返回秒级时间戳
func (TimeParse) UnixMilli ¶
UnixMilli 获取TimeParse对象的毫秒级时间戳
返回值:
int64 - 毫秒级时间戳
示例:
milli := tp.UnixMilli() // 返回毫秒级时间戳
func (TimeParse) UnixMilli2Strig ¶ added in v0.0.4
UnixMilli 获取TimeParse对象的毫秒级时间戳
返回值:
int64 - 毫秒级时间戳
示例:
milli := tp.UnixMilli() // 返回毫秒级时间戳