我正在通过创建web应用程序来学习Golang。在使用Go时,我经常遇到这种情况
err = SomeFunction()
// Handling err
if err != nil {
Logging(err)
return err
}在C或C++中,“处理错误”这一部分可以使用宏或内联函数来删除重复代码。有人知道在Golang怎么做吗?
发布于 2020-08-24 10:56:31
您可以使用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
}发布于 2020-08-24 20:40:16
内联函数在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://stackoverflow.com/questions/63553793
复制相似问题