首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang在处理错误返回时删除重复代码

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

Stack Overflow用户
提问于 2020-08-24 09:57:31
回答 2查看 368关注 0票数 1

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

代码语言:javascript
复制
err = SomeFunction()

// Handling err
if err != nil {
   Logging(err)
   return err
}

在C或C++中,“处理错误”这一部分可以使用宏或内联函数来删除重复代码。有人知道在Golang怎么做吗?

EN

回答 2

Stack Overflow用户

发布于 2020-08-24 10:56:31

您可以使用https://gitlab.com/opennota/macro

在input.go.tmpl中像这样定义宏

代码语言:javascript
复制
func MACRO_m1(a, b int) {
    a = b ^ 1
}

func main(){
   m1(v1, v2)
}

在命令行上

代码语言:javascript
复制
macro input.go.tmpl output.go

将转换为

代码语言:javascript
复制
func main(){
     v1 = v2 ^ 1       
}
票数 0
EN

Stack Overflow用户

发布于 2020-08-24 20:40:16

内联函数在Go中的工作方式与它在C或其他语言中的工作方式不同。Go编译器足够智能,可以将简单得多的函数转换为编译代码中的内联函数。

因此,如果您希望减少代码的重复或减少代码的认知复杂性(如果您的记录器正在对文件执行某些耗时的写操作),您可以采用以下方法创建一个匿名函数,并将其分配给变量并记录您的错误。

代码语言:javascript
复制
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()

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63553793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档