0xf

日記だよ

Go再入門メモ

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でアウトプットのファイル名を指定する。これも忘れてた。

テストはビルトインのやつで割となんとかなりそう?

素朴に書くなら足りそう。