猿问

Golang在处理错误返回时删除重复代码

我正在通过创建 Web 应用程序来学习 Golang。在使用 Go 时,我经常遇到这种情况


err = SomeFunction()


// Handling err

if err != nil {

   Logging(err)

   return err

}

在 C 或 C++ 中,“处理错误”部分我可以使用 MARCO 或 INLINE FUNCTION 删除重复代码。任何人都知道如何在 Golang 中做到这一点?


潇湘沐
浏览 191回答 2
2回答

有只小跳蛙

内联函数的工作方式Go不同于它在 C 或其他语言中的工作方式。Go编译器足够智能,可以在其编译代码中将更简单的函数转换为内联函数。因此,如果您希望减少代码重复或降低代码的认知复杂性,如果您的记录器正在对文件执行某些会消耗时间的写入操作,您可以采用以下方法创建一个匿名函数并将其分配给变量并记录您的错误。func returnFromErr(){    // Create a anonynous function and assign it a variable    logErr := func (err error)bool {        if err != nil{            logger(err)        }        return err != nil    }    err := someFunction()    // call the function and log your error. You can avoid certain level of duplication    if logErr(err){return}    fmt.Println("no error")}func main(){returnFromErr()}

翻过高山走不出你

你可以使用 https://gitlab.com/opennota/macro在 input.go.tmpl 中定义宏func MACRO_m1(a, b int) {    a = b ^ 1}func main(){   m1(v1, v2)}在命令行上macro input.go.tmpl output.go将转换为func main(){     v1 = v2 ^ 1       }
随时随地看视频慕课网APP

相关分类

Go
我要回答