caarlos0/envのenvDefaultでよくミスる・・・

この実装、よくミスる。

// 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}

ExampleValue には文字列 YEAAAAAAAAAAAAAAAA がすでに入っているのだから、感覚的には YEAAAAAAAAAAAAAAAA のままであってほしいのだが、そうはならない。これを意図通りにやろうと思うと、env.Parse のあとで必要に応じて上書きするか、envDefault を使わずに、自分で if 書いて、デフォルト値入れるしかなさそう。