caarlos0/envのenvDefaultでよくミスる・・・
https://go.dev/play/p/RuUchpqy9fX
この実装、よくミスる。
// You can edit this code!
// Click here and start typing.
package main
import (
"fmt"
"github.com/caarlos0/env/v6"
)
type Example struct {
Value string `env:"HOGE" envDefault:"HUGA"`
}
func main() {
e := Example{
Value: "YEAAAAAAAAAAAAAAAA",
}
env.Parse(&e)
fmt.Printf("%v", e)
}
コンコードを実装するとこうなる。
{HUGA}
Example
のValue
には文字列 YEAAAAAAAAAAAAAAAA
がすでに入っているのだから、感覚的には YEAAAAAAAAAAAAAAAA
のままであってほしいのだが、そうはならない。これを意図通りにやろうと思うと、env.Parse
のあとで必要に応じて上書きするか、envDefault
を使わずに、自分で if 書いて、デフォルト値入れるしかなさそう。