Struct2pflag v0.2.0 をリリースした
昨年 goark/struct2pflag の最初のリリースを行ったが,その後,骨折やら何やらでずうっと止まっていた。
最近ようやくこれを使う機会があったが,いくつか機能が足りなかったので,それらを追加して v0.2.0 としてリリースした。
追加機能のひとつは環境変数をバインドする BindEnv() 関数である。
こんな感じに使う。
type Env struct {
TopN int `env:"TOP_N" pflag:"top-n,n,number of top tags"`
Wait time.Duration `env:"WAIT" pflag:"wait,w,wait duration"`
}
func main() {
env := Env{TopN: 10, Wait: time.Second}
if err := struct2pflag.BindEnv(&env); err != nil {
_ = fmt.Fprintln(os.Stderr, err)
return
}
struct2pflag.BindDefault(&env)
pflag.Parse()
}
本当は hymkor/struct2env を使いたかったのだが, string 型しかサポートしてないため泣く泣く自作した。
コードを書いたのは AI だけど(笑)
もうひとつは Bind() および BindEnv() 関数で対応する型を増やしたこと。
今のところ,対応状況は以下のようになっている。
| Type | Bind |
BindEnv |
|---|---|---|
bool |
✓ | ✓ |
int |
✓ | ✓ |
int8 / int16 / int32 / int64 |
✓ | |
uint |
✓ | ✓ |
uint8 / uint16 / uint32 / uint64 |
✓ | |
float32 |
✓ | ✓ |
float64 |
✓ | ✓ |
string |
✓ | ✓ |
time.Duration |
✓ | ✓ |
本当は []string もサポートしたかったが,キリがないので見送った。
必要にかられれば対応する。
spf13/pflag がサポートしている型って物凄くあるので,全部カバーするのは面倒なのだ。
いや,どうせコードを書くのは AI なんだけど。
参考図書
- 初めてのGo言語 第2版 ―他言語プログラマーのためのイディオマティックGo実践ガイド
- Jon Bodner (著), 武舎 広幸 (翻訳)
- オライリー・ジャパン 2025-08-05 (Release 2025-08-05)
- 単行本(ソフトカバー)
- 4814401191 (ASIN), 9784814401192 (EAN), 4814401191 (ISBN)
- 評価
第2版。 Generics の説明が大幅に改訂されたらしい。練習問題も追加されている。
- Go言語 100Tips ありがちなミスを把握し、実装を最適化する impress top gearシリーズ
- Teiva Harsanyi (著), 柴田 芳樹 (著)
- インプレス 2023-08-18 (Release 2023-08-18)
- Kindle版
- B0CFL1DK8Q (ASIN)
- 評価
版元で PDF 版を購入可能。事実上の Effective Go とも言える充実の内容。オリジナルは敢えてタイトルに “tips” という単語を入れるのを避けたのに邦題が「100 Tips」とかなっていて,原作者がお怒りとの噂(あくまで噂)
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。と思ったら絶版状態らしい(2025-01 現在)。復刊を望む!



