いろいろ備忘録日記

主に .NET とか Go とか Python絡みのメモを公開しています。

Goメモ-15 (分岐, If, Tour of Go)

概要

Tour of Go の - If についてのサンプル。

tour.golang.org

Goのifの書き方は、他の言語と同じです。

if xxx {
}

C#やJavaなどと違って、( ) をつける必要がないですね。 個人的にはこっちの方が好きです。

Goでは、さらにステートメント付きのifも書くことができます。

こんな感じです。

if statement; condition {
}

この書き方はGoでエラー判定とかする場合に頻発します。

if err := xxx(); err != nil {
    // エラーがあった場合
}

サンプル

package tutorial

import (
    "fmt"
    "math/rand"
    "time"
)

// If は、 Tour of Go - If (https://tour.golang.org/flowcontrol/5) の サンプルです。
func If() error {
    // ------------------------------------------------------------
    // Go言語の if は、 他の言語の if の書き方とほぼ同様
    // C# などのように、 if () {} と書く必要はなくて、 if {} とカッコなしで書く
    // Go言語では、通常の if の書き方に加えて、ステートメント付きの if も書ける
    // これは、 if の条件部で実行したステートメントの値をその場で判定して利用できる
    // 以下のように書く.
    //
    // if statement; condition {
    // }
    //
    // このパターンは、Go言語においてエラー判定などで頻発する
    //
    // if err := xxxx(); err != nil {
    // }
    // ------------------------------------------------------------
    rand.Seed(time.Now().UnixNano())

    var (
        i = rand.Intn(100)
    )

    // 通常の if
    if i < 50 {
        fmt.Println("< 50")
    } else if i < 30 {
        fmt.Println("< 30")
    } else {
        fmt.Println("> 50")
    }

    // ステートメント付きの if
    // ifの条件部で宣言した変数は if ブロックの中で使えるし
    // elseブロックの中でも見える
    if i2 := rand.Intn(100); i2 < 80 {
        fmt.Println("< 80")
    } else {
        fmt.Println("> 80")
    }

    return nil
}

try-golang/tutorial_gotour_10_if.go at master · devlights/try-golang · GitHub

実行すると以下な感じ。

[Name] "tutorial_gotour_if"
> 50
> 80

過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com