什么是正确的golang方式来做到这一点:

Jac*_*cob 6 go

这看起来有点愚蠢,肯定有更好的方法吗?

err = SendMessageAndWait(db, "this is a test")
if err != nil {
    fmt.Println("Error sending message", err)
    return
}
err = DoSomething(db, "this is a test")
if err != nil {
    fmt.Println("Error sending message", err)
    return
}
err = CheckSomething(db, "this is another test")
if err != nil {
    fmt.Println("Error sending message", err)
    return
}
err = SendMessageAndWait(db, "this is a third test")
if err != nil {
    fmt.Println("Error sending message", err)
    return
}
... x10 ...
Run Code Online (Sandbox Code Playgroud)

One*_*One 4

遗憾的是,Go 中就是这样,但是您可以通过某种方式使其更简洁:

func isError(err error, pre string) error {
    if err != nil {
        log.Printf("%v: %v", pre, err)
    }
    return err
}

func isErrorBool(err error, pre string) (b bool) {
    if err != nil {
        log.Printf("%v: %v", pre, err)
        b = true
    }
    return
}

func checkSomething() error {
    return nil
}

func main() {
    if err := isError(checkSomething(), "something failed"); err != nil {
        return /* err */
    }

    //if you don't want to return the error, just check it and die.
    if isErrorBool(checkSomething(), "something else failed") { 
        return
    }
}
Run Code Online (Sandbox Code Playgroud)