package goutil import "github.com/gookit/goutil/stdutil" // FuncName get func name func FuncName(f any) string { return stdutil.FuncName(f) } // Go is a basic promise implementation: it wraps calls a function in a goroutine // and returns a channel which will later return the function's return value. func Go(f func() error) error { ch := make(chan error) go func() { ch <- f() }() return <-ch } // ErrFunc type type ErrFunc func() error // CallOn call func on condition is true func CallOn(cond bool, fn ErrFunc) error { if cond { return fn() } return nil } // CallOrElse call okFunc() on condition is true, else call elseFn() func CallOrElse(cond bool, okFn, elseFn ErrFunc) error { if cond { return okFn() } return elseFn() }