k01ken’s b10g

He110 W0r1d!

Goでコマンドライン引数を受け取る

開発環境はWindows10 Professional(64bit) + go1.15.3 windows/amd64

command.go

package main

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

func main(){
  flag.Parse()
  rand.Seed(time.Now().UnixNano())
  r := rand.Intn(3) // 0~2のどれかの値を取得する

  PlayerHand := flag.Args()[0]

  if PlayerHand != "g" && PlayerHand != "p" && PlayerHand != "t" {
    fmt.Println("半角小文字で、g か t か p を入力してください")
    return
  }

  var EnemyHand string
  switch r {
    case 0:
      fmt.Println("相手はグーを出しました")
      EnemyHand = "g"
      break
    case 1:
      fmt.Println("相手はチョキを出しました")
      EnemyHand = "t"
      break
    case 2:
      fmt.Println("相手はパーを出しました")
      EnemyHand = "p"
      break
  }

  
  switch PlayerHand {
    case "p":
      switch EnemyHand {
        case "g":
          fmt.Println("あなたの勝ちです")
          break
        case "t":
          fmt.Println("あなたの負けです")
          break
        case "p":
          fmt.Println("引き分けです")
          break
      }
      break
    case "g":
      switch EnemyHand {
        case "g":
          fmt.Println("引き分けです")
          break
        case "t":
          fmt.Println("あなたの勝ちです")
          break
        case "p":
          fmt.Println("あなたの負けです")
          break
      }
      break
    case "t":
      switch EnemyHand {
        case "g":
          fmt.Println("あなたの負けです")
          break
        case "t":
          fmt.Println("引き分けです")
          break
        case "p":
          fmt.Println("あなたの勝ちです")
          break
      }
      break
  }
}

以下にコードを置いておきます。
github.com


■参考リンク
golang でコマンドライン引数を使う - Qiita
Goのmath/randとcrypto/rand - Qiita