コマンドラインで与えられたパラメータはos
パッケージのArgs
で受け取ることができます。
C言語のmain関数やJavaのmainメソッドでは引数でコマンドラインパラメータを受け取りますが、Golangでは引数ではなくos.Args
を通じて取得することになります
os.Args
は以下の特徴を持ちます
os.Args
はstring型のスライス- 0番目の要素には実行したコマンド名が格納される
- 1番目以降の各要素にコマンドに渡された各引数が格納される
以下でos.Args
を利用するプログラムを作成して、実際にコマンドとして実行して動きを確認してみます
■サンプルコード
os.Args
の要素数と中の値を表示するプログラムになっています
package main import ( "fmt" "os" ) func main() { fmt.Printf("args count: %d\n", len(os.Args)) fmt.Printf("args : %#v\n", os.Args) for i, v := range os.Args { fmt.Printf("args[%d] -> %s\n", i, v) } }
■実行結果
○引数として param1 と param2 を与える
C:\go_tmp\osargstrial.exe param1 param2 args count: 3 args : []string{"osargstrial.exe", "param1", "param2"} args[0] -> osargstrial.exe args[1] -> param1 args[2] -> param2
先頭要素にはコマンド名が格納され、それ以降の要素に引数の値が格納されています
○引数として param1 と param2 と "aaaa bbbb" と -version を与える
C:\go_tmp\osargstrial.exe param1 param2 "aaaa bbbb" -version args count: 5 args : []string{"osargstrial.exe", "param1", "param2", "aaaa bbbb", "-version"} args[0] -> osargstrial.exe args[1] -> param1 args[2] -> param2 args[3] -> aaaa bbbb args[4] -> -version
"(ダブルクォート)で囲った引数は、os.Args
の1要素で扱われます
○引数なし
C:\go_tmp\osargstrial>osargstrial.exe args count: 1 args : []string{"osargstrial.exe"} args[0] -> osargstrial.exe
引数無しコマンドが実行された場合は、os.Args
にはコマンド名のみが格納されます
補足
os.Args
でコマンドラインパラメータを扱うことはできますが、もう少し高機能なflag
パッケージというものも提供されいます。
flag
パッケージの使い方については以下エントリを参照ください。