百度站点管理,网络销售怎么做,漳州城乡建设管理局网站,做一个网站大概需要多少钱在比较一段长的时间里#xff0c;Go 的错误处理已经没有什么特别的进展和新改进了。看着已经到了瓶颈期。
今天在 GitHub 上学习时#xff0c;看到 Go 社区里有人提了个错误处理的优化提案《proposal: Go 2: Error-Handling Paradigm with !err Grammar Sugar》#xff0c;…在比较一段长的时间里Go 的错误处理已经没有什么特别的进展和新改进了。看着已经到了瓶颈期。
今天在 GitHub 上学习时看到 Go 社区里有人提了个错误处理的优化提案《proposal: Go 2: Error-Handling Paradigm with !err Grammar Sugar》也是引入新的语法来解决该问题。
大家一起来看看也集思广益一下。原提案作者的目的是新增一个 listen 关键字和配合管道符等语法来实现新的错误处理。
原本的 Go1 代码我们在处理错误时需要使用 if err ! nil。如下代码 func copy(src, dst string) (int64, error) {r, err : os.Open(input.txt)if err ! nil {return 0, err}defer r.Close()w, err : os.Create(output.txt)if err ! nil {return 0, err}defer w.Close()if _, err io.Copy(w, r); err ! nil {return 0, err}return 0, err
} 本提案的变化是新增一个 listen 关键字用于监听 err 变量再配合 | 管道符来实现新的错误处理机制。
如下演示代码 listen: err {if err ! nil {return 0, err}return 0, nil
}()func copy(src, dst string) (int64, error) {listen:r, err : os.Open(input.txt)defer r.Close()w, err : os.Create(output.txt)defer w.Close()_, err io.Copy(w, r)
} listen 关键字监听了 err 变量再在上述的代码块中进行统一的错误逻辑处理。
如果是多个 err 变量会是如下处理方式 listen: err | err2 {if err ! nil {return 0, err}return 0, nil
}() 增加了管道符同时对 err 和 err2 变量进行监听和处理。
本提案还在等待作者补充更多的语言变更的实现细节。不过截至目前为止吐槽是不少的。
大家对此有没有更好的建议和想法呢
Go 的新错误处理的改造方向真的是让人头大。我这边有记载被 ban 的错误处理合集都已经有许多了。停滞不前中。
文章持续更新中