由于冗长的错误处理语法,因此我创建了一个check
下面的函数,该函数充当“全局”错误处理程序。如果要恐慌而不是登录,则仅更改check
功能。问题是,现在我只想简单地return
让其他go例程在出现错误时仍然可以运行。所以问题是:我该怎么做?是否可以?
func main() {
for k, v := range foo {
go func() {
err = doSomething()
check("this one failed", err)
}()
}
}
func check(errMsg string, err error) {
if err != nil {
log.Fatalf(errMsg, err)
}
}
但是现在我发现,如果有任何错误,我需要返回匿名函数,而不是退出(log.Fatal
),所以我想知道是否有可能返回anyonymou
没有语言功能可让您使父函数自动返回以响应简单的函数调用。
但是,有一种方法可以导致当前的goroutine退出,这可能是您所追求的:runtime.Goexit
。请注意,这具有与调用类似的破坏性潜力os.Exit
,因此在由其他程序包或其他无关代码创建的goroutines上下文中调用它很不好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句