DRYな備忘録

Don't Repeat Yourself.

Go言語の三項演算子

そんなものは無い。設計を見直そう。

There is no ternary form in Go.

Frequently Asked Questions (FAQ) - The Go Programming Language

それでも、クライアントがAPIレスポンスに、ゼロ値じゃなくてnullが欲しい、と要求してくるケースがある。この場合はinterface{}でいいのだから、無名関数呼び出しで適当にこういう処理すればいいんじゃないか。

response := map[stirng]interface{}{
    "expire": func() interface{} {
        // because client requires "expire" field as "null"
        if user.Expire.IsZero() {
            return nil
        }
        return user.Expire
    }(),
}

ということでつくった。8行。

otiai10/ternary · GitHub

DRY