超小ネタ: Goでif式をやりてんじゃ。


※if「式」のことです。if「文」のことじゃないです。

Goには現在if式がないので実際には無理ですが、無名関数を使うとこんな風にif式っぽく書けます。

    queryParam := c.QueryParam("queryParam")
    param, err := func() (int, error) {
        if queryParam == "" {
            return defaultValue, nil
        }
        return strconv.Atoi(queryParam) //Atoiは結果とerrorの2値を返す
    }()

──完。

余談

    queryParam := c.QueryParam("queryParam")
    var param int
    var err error
    if queryParam == "" {
        param = defaultValue
    } else {
        param, err = strconv.Atoi(queryParam)
    }

こんな風にifの前で変数宣言して代入というやり方が多分普通ですが、なんとなく無名関数を使う方がif式っぽくて気持ちいい気がします。