おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

Go言語のflagの初期化時の注意

ハマったことを備忘録として残しておきます

  langCode := map[string]string {
    "video": *flag.String("v", "J", "string flag"),
    "subtitle": *flag.String("s", "J", "string flag"),
  }

  flag.Parse()

  fmt.Println(langCode)

$ sample -v E

とすると、オプションで指定した"E"が入っておらず、しばらく悩んでから元のコードを見直したら、

      i = flag.Int("int", 0, "int flag")
    fmt.Println(*i)

とあったのを見て、 flag.Parseをする前に、flag.Stringを使って、デフォルト値を入れてそのポインタを変数に入れておき、flag.Parse()するときに値を変更して使うものだということを理解した