Pak*_*ula 11
从 Go 1.18 开始,我们可以定义 typedMust而不是interface{}:
func Must[T any](obj T, err error) T {
if err != nil {
panic(err)
}
return obj
}
Run Code Online (Sandbox Code Playgroud)
使用方法: https: //go.dev/play/p/ajQAjfro0HG
func success() (int, error) {
return 0, nil
}
func fail() (int, error) {
return -1, fmt.Errorf("Failed")
}
func main() {
n1 := Must(success())
fmt.Println(n1)
var n2 int = Must(fail())
fmt.Println(n2)
}
Run Code Online (Sandbox Code Playgroud)
当返回非零main时,必须在内部失败fail()error
您甚至可以为超过 1 个返回参数定义Mustn ,例如
func Must2[T1 any, T2 any](obj1 T1, obj2 T2, err error) (T1, T2) {
if err != nil {
panic(err)
}
return obj1, obj2
}
Run Code Online (Sandbox Code Playgroud)