見出し画像

Go-lang 自習 10日目「コマンドライン引数」

Go言語自習の10日目です。コマンドライン引数を受け取ってパースします。

os.Args

os.Argsでコマンドライン引数がstringの配列で取得できます。
https://gobyexample.com/command-line-arguments

func main() {
	args := os.Args
	fmt.Println(args)

Package flag

flagパッケージは、ls -la のように lsコマンドに渡す -laのようなフラグ形式の引数を設定できるパッケージ。
https://gobyexample.com/command-line-flags
https://golang.org/pkg/flag/

コマンドライン引数の種類はこちらを参考にします。
cli-kintone https://github.com/kintone/cli-kintone

.envファイルで設定していた部分を -a 1 のようにコマンドラインから受け取れるように変更していきます。

flag.String

文字列を受け取るフラグを追加します。

	var aFlagPtr = flag.String("a", "0", "App ID (default: 0)")

flag.StringVar

flag.Stingを利用する他に、flag.StringVar()関数を使うこともできます。

	var dstrvar string
	flag.StringVar(&dstrvar, "d", "subdomain", "Domain name")

flag.Parse()

フラグを設定したら、flag.Parse()で引数をパースします。​​

func main() {
	var aFlagPtr = flag.String("a", "0", "App ID (default: 0)")

	var dstrvar string
	flag.StringVar(&dstrvar, "d", "subdomain", "Domain name")

	flag.Parse()

	fmt.Println("App ID:", *aFlagPtr)
	fmt.Println("Domain name:", dstrvar)
/* 省略 */
}

引数を渡して結果を確認します。
-h でUsageも表示されます。

$ ./yaclik -h
Usage of ./yaclik:
 -a string
       App ID (default: 0) (default "0")
 -d string
       Domain name (default "subdomain")
       
$ ./yaclik -a 1 -d hoo
App ID: 1
Domain name: hoo


この記事が気に入ったらサポートをしてみませんか?