登录
首页 >  Golang >  Go问答

编写没有泛型的泛型错误处理函数

来源:Golang技术栈

时间:2023-04-16 11:52:47 458浏览 收藏

本篇文章向大家介绍《编写没有泛型的泛型错误处理函数》,主要包括golang,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我知道 Go 将来不会有泛型,并且有一些建议可以用其他构造替换它们。但是在下面的示例中,我陷入了困境。

func P(any interface{}, err error) (interface{}) {
    if err != nil {
        panic("error: "+ err.Error())
    }
    return any
}

正如您可能猜到的那样,我试图在任何错误上都失败,并且想要P()围绕任何返回两个结果而第二个是错误的函数。这工作正常,但any丢失了它的类型信息,结果中只是一个空接口。

由于我也在调用 lib 函数,因此我看不到使用接口或反射解决此问题的方法。

有任何想法吗?我是完全在错误的轨道上还是接近目标?

正确答案

一种解决方案是针对[go generate](https://docs.google.com/document/d/1V03LUfjSADDooDMhe- _K59EgpTEm3V8uvQRuNMAEnjg/edit)您的P()功能,一种针对您需要使用的每种具体类型的解决方案。
请参阅以下示例:

这将使调用这些库函数更容易,因为生成的具体 P() 实现将使用正确的类型而不是 interface{}。

本篇关于《编写没有泛型的泛型错误处理函数》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>