if v, ok := os.LookupEnv("IDAASHTTPPORT"); ok {
c.HTTPPort, _ = strconv.Atoi(v)
}
if v, ok := os.LookupEnv("IDAASDBNAME"); ok {
c.DBUserName = v
}
if v, ok := os.LookupEnv("IDAASDBPW"); ok {
c.DBPasswd = v
}
if v, ok := os.LookupEnv("IDAASDBPORT"); ok {
c.DBPort, _ = strconv.Atoi(v)
}
if v, ok := os.LookupEnv("IDAASDBHOST"); ok {
c.DBHost = v
}
'c' が、私は唯一の環境変数が存在する場合は、構造体のフィールドを更新する次のstructこの一連のifをよりエレガントに書くことはできますか?
type Configuration struct {
HTTPPort int
DBUserName string
DBPasswd string
DBPort int
DBHost string
}
です。ちょっとかわいい地図イテレータやそれがうまくいくかのようだが、いい解を見つけることはできない。
設定されていない場合の値は何ですか?もしそれらがデフォルト(空)の場合、 'c.DBUserName = os.Getenv(" IDAASDBPW ")' –
と 'c.HTTPPort、_ = strconv.Atoi(" IDAASHTTPPORT ")'を実行してください。 env var missing –
これを一般的な方法で行いたい場合は、環境変数名とデータ型を与えるフィールドにstructタグを追加することができます。その後、リフレクションを使用してフィールドに値を設定する関数を書くことができます。そうすれば、新しいフィールドを追加する場合に必要なのは、適切なタグでフィールドを定義することだけです。 –