Skip to content

简介

ehelper 是 ee-go 的工具函数模块,提供常用的辅助功能,包括 JSON 返回值构建、文件/目录检测、随机字符串生成、字符串包含检查、切片去重、Map 合并、随机延迟和随机整数生成。这些函数覆盖了应用开发中最常见的基础操作,减少重复代码编写。

导入

go
import "github.com/wallace5303/ee-go/ehelper"

API

GetJson()

说明:创建标准 JSON 返回值结构体,默认 Code0Msg 为空字符串,Datanil。用于统一的 HTTP 响应格式。

参数:无

返回值*ResultJson — 初始化后的 JSON 结果结构体指针

示例

go
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 标签说明
Codeint"code"状态码,0 表示成功
Msgstring"msg"消息内容,成功时可为空
Dataany"data"返回数据,可以是任意类型

示例

go
// 自定义响应
r := &ehelper.ResultJson{
    Code: -1,
    Msg:  "参数错误",
    Data: nil,
}

FileIsExist(path)

说明:检查指定路径的文件或目录是否存在。路径存在返回 true,不存在返回 false

参数

参数类型必填说明
pathstring文件或目录的绝对/相对路径

返回值bool — 文件存在返回 true,不存在返回 false

示例

go
configPath := "/opt/app/config.json"
if ehelper.FileIsExist(configPath) {
    // 读取配置
} else {
    // 使用默认配置
}

IsDir(path)

说明:检查指定路径是否为目录。路径不存在或不是目录时返回 false

参数

参数类型必填说明
pathstring要检查的路径

返回值bool — 是目录返回 true,不是目录或路径不存在返回 false

示例

go
path := "/opt/app/data"
if ehelper.IsDir(path) {
    fmt.Println("data 是目录")
} else {
    os.MkdirAll(path, 0755)
}

参见FileIsExist()


GetRandomString(length)

说明:生成指定长度的随机字符串,字符范围包括小写字母 a-z 和数字 0-9。调用间隔 10ns 以确保随机性。

参数

参数类型必填说明
lengthint生成的字符串长度

返回值string — 包含小写字母和数字的随机字符串

示例

go
// 生成 16 位随机字符串
token := ehelper.GetRandomString(16)
fmt.Println("Token:", token) // 例如:"a3b7c9d2e5f8g1h4"

Contains(str, strs)

说明:检查字符串 str 是否存在于字符串切片 strs 中。顺序比较,首次匹配即返回 true

参数

参数类型必填说明
strstring要查找的字符串
strs[]string目标字符串切片

返回值bool — 找到返回 true,未找到返回 false

示例

go
events := []string{"beforeClose", "ready"}
if ehelper.Contains("beforeClose", events) {
    fmt.Println("事件受支持")
}

参见SlicesContains()


SlicesContains(slice, str)

说明:检查字符串 str 是否存在于字符串切片 slice 中。功能与 Contains() 相同,命名风格不同。框架内部统一使用此函数。

参数

参数类型必填说明
slice[]string目标字符串切片
strstring要查找的字符串

返回值bool — 找到返回 true,未找到返回 false

示例

go
validEvents := []string{"beforeClose"}
if ehelper.SlicesContains(validEvents, eventName) {
    // 注册事件
}

参见Contains()


RemoveDuplicatedElem(slice)

说明:移除字符串切片中的重复元素,保留每个元素的首次出现,返回去重后的新切片。原切片不会被修改。

参数

参数类型必填说明
slice[]string要去重的字符串切片

返回值[]string — 去重后的字符串切片

示例

go
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 类型数据。

参数

参数类型必填说明
srcmap[string]any源 Map,提供要合并的键值对
tgtmap[string]any目标 Map,接收合并结果
itgtmap[any]any可选中间 Map,同步接收合并结果;传 nil 可跳过

返回值:无(直接修改 tgtitgt

示例

go
// 配置合并:将环境配置合并到默认配置
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"] 保持为 true

RandomSleep(minMills, maxMills)

说明:在指定时间范围内随机休眠。休眠时间为 [minMills, maxMills) 毫秒之间的随机值。适用于避免集中并发请求、模拟延迟等场景。

参数

参数类型必填说明
minMillsint最小休眠时间(毫秒)
maxMillsint最大休眠时间(毫秒)

返回值:无

示例

go
// 随机休眠 100-500 毫秒
ehelper.RandomSleep(100, 500)

参见Int()


Int(min, max)

说明:生成 [min, max) 范围内的随机整数。调用间隔 10ns 以确保随机性。

参数

参数类型必填说明
minint随机数下界(包含)
maxint随机数上界(不包含)

返回值int — 范围内的随机整数

示例

go
// 生成 1-100 的随机数
num := ehelper.Int(1, 100)
fmt.Println("随机数:", num)

参见RandomSleep()