🎖️

辅助函数

一些日常开发可能用的到的辅助型函数
import( "github.com/sohaha/zlsgo/zutil" )
 

自动重试

自动多次执行指定函数直到成功或达到限制
func example()(int,error){ return 0, nil } var r int // 重试最多 5 次 ok := zutil.DoRetry(5, func() bool { // code ... r, err := example() return err == nil }, func(rc *zutil.RetryConf) { // 使用回避指数算法 rc.BackOffDelay = true }) if ok { zlog.Debug("执行成功", r) }
 

结构体相关

type Obj struct{} func (*Obj) RunTest() {} // 获取结构体全部方法 err := zutil.GetAllMethod(&Obj{}, func(m reflect.Method, v reflect.Value) error { // m.Name 方法名 }) // 运行结构体全部方法 err := zutil.GetAllMethod(&Obj{},args...)
 

环境相关

// 读取环境变量 func Getenv(name string, def ...string) string // 判断是否 Windows func IsWin() bool // 判断是否 macOS func IsMac() bool // 判断是否 Linux func IsLinux() bool
 

无限缓冲区 channel

// 无限缓冲区 ch := zutil.NewChan[int]() // 限制缓冲区 // ch := zutil.NewChan[int](10) // 写入 ch.In() <- 1 // 读取 v <- ch.Out() // 关闭通道 ch.Close()

其他

// 是否点击启动(目前非 Windows 都是 false) func IsDoubleClickStartUp() bool // 尝试将资源限制 RLIMIT_NOFILE 设置为最大值 func MaxRlimit() (int, error)