go言語でflagを使用したパラメータ指定を行う
とにかく実装
sample1.go
package main import ( "log" "flag" "os" ) // 引数取得エリア type ParamItem struct { Url string Count int User string Pass string } // 引数を指定して値を受け取る処理 func main() { // 処理開始 log.Println("start") param := new(ParamItem) // flagObj := flag.NewFlagSet(os.Args[0], flag.ExitOnError) // 引数を登録 flagObj.StringVar(¶m.Url, "url", "", "URLを設定してください。") flagObj.StringVar(¶m.User, "user", "", "ユーザ名を設定してください。") flagObj.StringVar(¶m.Pass, "pass", "", "パスワードを設定してください。") // パース処理 flagObj.Parse(os.Args[1:]) for 0 < flagObj.NArg() { flagObj.Parse(flagObj.Args()[1:]) } log.Println("url = " + param.Url) log.Println("user = " + param.User) log.Println("pass = " + param.Pass) // 処理終了 log.Println("end") }
↓
$ go run sample1.go -url http://hogehoge.com -user aaa -pass 1234 2017/10/28 17:29:07 start 2017/10/28 17:29:07 url = http://hogehoge.com 2017/10/28 17:29:07 user = aaa 2017/10/28 17:29:07 pass = 1234 2017/10/28 17:29:07 end $
ヘルプコマンドの場合
$ go run sample1.go -help 2017/10/28 17:29:46 start -pass string パスワードを設定してください。 -url string URLを設定してください。 -user string ユーザ名を設定してください。 exit status 2 $
順番ってキー名の昇順?
所感
項目名と連動するので引数で何が必要かなどの指定を用意しやすい。
設定ファイルでの読み込みと合わせて行えば役に立ちそう