Go言語におけるif-else文の覚書。

 

基本構文

    if 条件式 {
        処理A
    } else {
        処理B
    }

 

以下サンプル。

if_else1.go

package main

import (
    "fmt"
    "strconv"
)

func main() {
    num := 15
    var str string
    str = strconv.Itoa(num)
    
    //if-elseによる条件分岐
    if num >= 10 {
        fmt.Println(str, ":", "変数numは10以上です。")  //15 : 変数numは10以上です。
    } else {
        fmt.Println(str, ":", "変数numは10未満です。")
    }
}

 

if文の条件の分岐を複数実行するには、else ifブロックを作って投入する。以下の条件に沿って処理が実行される。

  • 条件式Aが成立する場合は処理A
  • 条件式Bが成立する場合は処理B
  • これらの条件が成立しなかった場合は処理C

 

ただし条件が成立した時点で処理が終了するため、記述方法には注意する。

 

     if 条件式A {
          処理A
     } else if 条件式B {
          処理B
     } else {
          処理C
     }

 

if_else2.go

package main

import (
    "fmt"
    "strconv"
)

func main() {
    num   := 6
    var str string
    str = strconv.Itoa(num)
    
    //if-else文で複数条件分岐するには、"else if"を挟む。
    if num   >= 10 {
        fmt.Println(str, ":", "変数num は10以上です。")
    } else if num   >= 5 {
        fmt.Println(str, ":", "変数num は5以上10未満です。") //6 : 変数num は5以上10未満です
    } else {
        fmt.Println(str, ":", "変数num は5未満です。")
    }
}

 

Python置き換えパターン。

def main():

    num = 4
    s = str(num)
    
    # Pythonの複数条件分岐ブロックは "else if"ではなく"elif"とする。
    if num >= 10:
        print(s, ":", "変数numは10以上です。")
    elif num >= 5:
        print(s, ":", "変数numは5以上10未満です。")
    else:
        print(s, ":", "変数numは5未満です。")  # 4 : 変数numは5未満です。

if __name__ == "__main__":
    main()

 

追記。引数を与えてそれに応じて処理するパターンやってみた。

if_args.go

package main

import (
    "flag"
    "fmt"
    "strconv"
)

func main() {
    flag.Parse()
    
    //引数をintに変換する
    arg := flag.Arg(0)
    var i int
    var str string=arg
    i, _ = strconv.Atoi(str)

    //引数の値に応じて出力を分岐
    if i >= 100 {
        fmt.Println("変数iは100以上です。")
    } else {
        fmt.Println("変数iは100未満です。")
    }
}

 

結果

 $ go run if_args.go 100
変数iは100以上です。

 $ go run if_args.go 101
変数iは100以上です。

 $ go run if_args.go 99
変数iは100未満です。

 

参考
【Go入門】ifによる条件分岐とelse if, elseブロック

 

 

Metro


関連がありそうな記事