简介
ehelper 是 ee-go 的工具函数模块,提供常用的辅助功能,包括 JSON 返回值构建、文件/目录检测、随机字符串生成、字符串包含检查、切片去重、Map 合并、随机延迟和随机整数生成。这些函数覆盖了应用开发中最常见的基础操作,减少重复代码编写。
导入
import "github.com/wallace5303/ee-go/ehelper"API
GetJson()
说明:创建标准 JSON 返回值结构体,默认 Code 为 0,Msg 为空字符串,Data 为 nil。用于统一的 HTTP 响应格式。
参数:无
返回值:*ResultJson — 初始化后的 JSON 结果结构体指针
示例:
result := ehelper.GetJson()
result.Code = 0
result.Msg = "success"
result.Data = map[string]any{
"id": 1,
"name": "example",
}
// 返回给前端
c.JSON(200, result)参见:ResultJson
ResultJson
说明:统一的 JSON 响应结构体,用于 HTTP 接口返回数据。包含三个字段:状态码、消息和数据。字段名通过 JSON 标签映射为小写。
| 字段 | 类型 | JSON 标签 | 说明 |
|---|---|---|---|
| Code | int | "code" | 状态码,0 表示成功 |
| Msg | string | "msg" | 消息内容,成功时可为空 |
| Data | any | "data" | 返回数据,可以是任意类型 |
示例:
// 自定义响应
r := &ehelper.ResultJson{
Code: -1,
Msg: "参数错误",
Data: nil,
}FileIsExist(path)
说明:检查指定路径的文件或目录是否存在。路径存在返回 true,不存在返回 false。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 文件或目录的绝对/相对路径 |
返回值:bool — 文件存在返回 true,不存在返回 false
示例:
configPath := "/opt/app/config.json"
if ehelper.FileIsExist(configPath) {
// 读取配置
} else {
// 使用默认配置
}IsDir(path)
说明:检查指定路径是否为目录。路径不存在或不是目录时返回 false。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 要检查的路径 |
返回值:bool — 是目录返回 true,不是目录或路径不存在返回 false
示例:
path := "/opt/app/data"
if ehelper.IsDir(path) {
fmt.Println("data 是目录")
} else {
os.MkdirAll(path, 0755)
}参见:FileIsExist()
GetRandomString(length)
说明:生成指定长度的随机字符串,字符范围包括小写字母 a-z 和数字 0-9。调用间隔 10ns 以确保随机性。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| length | int | 是 | 生成的字符串长度 |
返回值:string — 包含小写字母和数字的随机字符串
示例:
// 生成 16 位随机字符串
token := ehelper.GetRandomString(16)
fmt.Println("Token:", token) // 例如:"a3b7c9d2e5f8g1h4"Contains(str, strs)
说明:检查字符串 str 是否存在于字符串切片 strs 中。顺序比较,首次匹配即返回 true。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| str | string | 是 | 要查找的字符串 |
| strs | []string | 是 | 目标字符串切片 |
返回值:bool — 找到返回 true,未找到返回 false
示例:
events := []string{"beforeClose", "ready"}
if ehelper.Contains("beforeClose", events) {
fmt.Println("事件受支持")
}参见:SlicesContains()
SlicesContains(slice, str)
说明:检查字符串 str 是否存在于字符串切片 slice 中。功能与 Contains() 相同,命名风格不同。框架内部统一使用此函数。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slice | []string | 是 | 目标字符串切片 |
| str | string | 是 | 要查找的字符串 |
返回值:bool — 找到返回 true,未找到返回 false
示例:
validEvents := []string{"beforeClose"}
if ehelper.SlicesContains(validEvents, eventName) {
// 注册事件
}参见:Contains()
RemoveDuplicatedElem(slice)
说明:移除字符串切片中的重复元素,保留每个元素的首次出现,返回去重后的新切片。原切片不会被修改。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| slice | []string | 是 | 要去重的字符串切片 |
返回值:[]string — 去重后的字符串切片
示例:
names := []string{"alice", "bob", "alice", "charlie", "bob"}
unique := ehelper.RemoveDuplicatedElem(names)
fmt.Println(unique) // ["alice", "bob", "charlie"]Mapserge(src, tgt, itgt)
说明:将源 Map src 合并到目标 Map tgt 中。对于目标 Map 中已存在的键,如果值是 Map 类型则递归合并,否则源值覆盖目标值。键名匹配不区分大小写。可选的 itgt 参数(类型 map[any]any)同步接收合并结果,用于兼容 Viper 内部的 map[any]any 类型数据。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| src | map[string]any | 是 | 源 Map,提供要合并的键值对 |
| tgt | map[string]any | 是 | 目标 Map,接收合并结果 |
| itgt | map[any]any | 否 | 可选中间 Map,同步接收合并结果;传 nil 可跳过 |
返回值:无(直接修改 tgt 和 itgt)
示例:
// 配置合并:将环境配置合并到默认配置
defaultCfg := map[string]any{
"http": map[string]any{
"port": 8080,
"enable": true,
},
}
envCfg := map[string]any{
"http": map[string]any{
"port": 9090,
},
}
ehelper.Mapserge(envCfg, defaultCfg, nil)
// defaultCfg["http"]["port"] 被覆盖为 9090
// defaultCfg["http"]["enable"] 保持为 trueRandomSleep(minMills, maxMills)
说明:在指定时间范围内随机休眠。休眠时间为 [minMills, maxMills) 毫秒之间的随机值。适用于避免集中并发请求、模拟延迟等场景。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| minMills | int | 是 | 最小休眠时间(毫秒) |
| maxMills | int | 是 | 最大休眠时间(毫秒) |
返回值:无
示例:
// 随机休眠 100-500 毫秒
ehelper.RandomSleep(100, 500)参见:Int()
Int(min, max)
说明:生成 [min, max) 范围内的随机整数。调用间隔 10ns 以确保随机性。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| min | int | 是 | 随机数下界(包含) |
| max | int | 是 | 随机数上界(不包含) |
返回值:int — 范围内的随机整数
示例:
// 生成 1-100 的随机数
num := ehelper.Int(1, 100)
fmt.Println("随机数:", num)参见:RandomSleep()
