if语句的多重赋值

时间:2014-08-13 09:22:38

标签: go

可以通过if条件执行多个赋值,如下面的代码?

func SendEmail(url, email string) (string, error) {

    genUri := buildUri()
    if err := setRedisIdentity(genUri, email); err != nil; genUrl, err := buildActivateUrl(url, genUri);  {
        return "", err
    }  

    return "test", nil

}

2 个答案:

答案 0 :(得分:6)

没有。只有一个简单的陈述'根据{{​​3}}

,允许在if语句的开头

spec方法是多次测试,可能会返回错误,因此我认为您需要以下内容:

func SendEmail(url, email string) (string, error) {
    genUri := buildUri()
    if err := setRedisIdentity(genUri, email); err != nil {
        return "", err
    }  
    if genUrl, err := buildActivateUrl(url, genUri); err != nil {
        return "", err
    }
    return "test", nil
}

答案 1 :(得分:5)

看起来你想要这样的东西:

package main

import "fmt"

func a(int) int { return 7 }

func b(int) int { return 42 }

func main() {
    if x, y := a(1), b(2); x > 0 && x < y {
        fmt.Println("sometimes")
    }
    fmt.Println("always")
}

输出:

sometimes
always