alecthomas/kong
コマンドラインパーサー。getoptsの賢いやつ。struct のメタデータにルールを書いていくGoっぽいやつ。
デフォルト値を設定できたり、サブコマンド構成をサポートしている、というのは割と普通なんだけど、なんと環境変数からの読み取りもサポートしていてすごい。便利だ。
可変長引数での配列/スライスの展開渡し
別に難しいことはなかったけど忘れてた。
func mylen(args ...string) int { return len(args) } // => 3 fmt.Printf("%d\n", mylen([]string{"one", "two", "three"} ...))
意外と WaitGroup は書き慣れる
var wg sync.WaitGroup for id := range idList { wg.Add(1) go func(){ defer wg.Done() }() } wg.Wait()
煩雑かなと思っていたけど割と手が慣れる。
同じディレクトリの *.go は同じパッケージじゃないといけない
忘れてた。
go build .*
は出力ファイルは最初に処理したファル名になる
-o
でアウトプットのファイル名を指定する。これも忘れてた。
テストはビルトインのやつで割となんとかなりそう?
素朴に書くなら足りそう。