Golang Go语言中使用generics简化错误处理

发布于 1周前 作者 sinazl 来自 Go语言

更新了自己的 doa 库:

https://github.com/godump/doa

这个迷你库的目的是当检测到 error 时立即 panic 掉程序.

核心代码其实就一行函数定义:

// Try will give you the embedded value if there is no error returns. If instead error then it will panic.
func Try[T any](a T, err error) T {
	if err != nil {
		panic(err)
	}
	return a
}

Golang Go语言中使用generics简化错误处理

更多关于Golang Go语言中使用generics简化错误处理的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

更多关于Golang Go语言中使用generics简化错误处理的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


一般 err 都不会 panic ,可能会加工一下,return 到上一层

error 的处理逻辑最好是可以作为参数传入的而不是默认 panic ?类似传入一个 func(err) ,这样更 general 一点,也比较接近 try-catch 的范式

在Golang中使用generics来简化错误处理是一个巧妙且强大的方法,特别是在处理类型安全且可重用的代码时。Generics于Go 1.18中引入,为开发者提供了一种编写泛型函数和类型的方式,从而可以避免编写大量重复的代码。

在错误处理方面,泛型可以用于创建通用的错误处理机制。例如,你可以编写一个泛型函数,它接受一个返回错误(error)的函数作为参数,并处理该错误。这种方法减少了在每个函数中单独处理错误的冗余代码,使代码更加简洁和可读。

此外,通过泛型,你还可以创建更通用的错误包装器或中间件,这些都可以在不影响类型安全性的前提下,对错误进行统一处理或记录。例如,你可以编写一个泛型中间件,它接受一个请求处理器和错误处理器作为参数,并在处理请求时捕获和记录错误。

然而,值得注意的是,虽然泛型可以极大地简化错误处理,但过度使用或不当使用可能会导致代码可读性下降。因此,在使用泛型时,应权衡其带来的好处与可能增加的复杂性。

总之,Golang中的generics为错误处理提供了一种新的、更灵活的方法。通过合理利用泛型,开发者可以编写更简洁、更可维护的代码,同时保持类型安全性。如果你正在寻找简化错误处理的方法,那么generics无疑是一个值得探索的选项。

回到顶部