1 Star 1 Fork 3

menuiis/gkit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
validate.go 647 Bytes
一键复制 编辑 原始数据 按行查看 历史
SongZhibin97 提交于 2022-01-21 13:50 +08:00 . feat:task
package task
import (
"errors"
"reflect"
)
var (
ErrTaskMustFunc = errors.New("task type must func")
ErrTaskReturnNoValue = errors.New("task return is no value")
ErrTaskReturnNoErr = errors.New("task return last values is must be error")
)
func ValidateTask(task interface{}) error {
v := reflect.ValueOf(task)
t := v.Type()
if t.Kind() != reflect.Func {
return ErrTaskMustFunc
}
if t.NumOut() < 1 {
return ErrTaskReturnNoValue
}
lastReturnType := t.Out(t.NumOut() - 1)
errorInterface := reflect.TypeOf((*error)(nil)).Elem()
if !lastReturnType.Implements(errorInterface) {
return ErrTaskReturnNoErr
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/menciis/gkit.git
git@gitee.com:menciis/gkit.git
menciis
gkit
gkit
d3f65ed26d21

搜索帮助