ecodeclub / ekit

支持泛型的工具库
https://doc.meoying.com/
Apache License 2.0
383 stars 164 forks source link

提供 Must 和 MustT 函数,简化错误处理 #250

Closed dxyinme closed 8 months ago

dxyinme commented 8 months ago

仅限中文

使用场景

提供 MustT(val T, err error) T 函数, 让出现error的地方直接panic,简化一些逻辑的处理 比如在程序启动的时候存在一些初始化函数,如果这些函数出错就直接panic。

原先可能需要
a, err := Init()
if err != nil {
      panic(err)
}

现在只需要
a := MustT(Init())

行业分析

如果你知道有框架提供了类似功能,可以在这里描述,并且给出文档或者例子

可行方案

两个函数

func MustT[T any] (val T, err error) T
func Must(err error)

其它

任何你觉得有利于解决问题的补充说明

你使用的是 ekit 哪个版本?

你设置的的 Go 环境?

上传 go env 的结果

flycash commented 8 months ago

单独提供这个方法其实没什么必要,因为我觉得 if err != nil 这种判定方式更加直观。另外一个就是,如果要引入类似的判定,那么还不如引入一个完整的 require 包,类似于测试用的 require 包。

flycash commented 8 months ago

a := MustT(Init()) 这种写法在 Init 返回两个返回值的情况下,应该是编译错误,

dxyinme commented 8 months ago

a := MustT(Init()) 这种写法在 Init 返回两个返回值的情况下,应该是编译错误,

应该不会编译错误,不指定类型他会自己推断的,类似于这种写法

func Must[V any](out V, err error) V {
    if err != nil {
        panic(err)
    }
    return out
}
dxyinme commented 8 months ago

有道理,引入require包会更直接,那我直接用那个