1. ホーム
  2. go

[解決済み] env varが空の場合、どのようにデフォルト値を割り当てるのですか?

2023-04-22 13:52:05

質問

Go で環境変数が設定されていない場合、どのようにしてデフォルト値を割り当てるのですか?

Pythonでは、次のようにすることができました。 mongo_password = os.getenv('MONGO_PASS', 'pass') ここで pass はデフォルト値で MONGO_PASS env var が設定されていない場合のデフォルト値です。

を元にしたif文を試してみました。 os.Getenv が空であることに基づいてif文を試してみましたが、if文の中での変数割り当ての範囲により、うまくいかないようです。また、複数のenv varをチェックしているので、if文の中でこの情報を元に動作させることはできません。

どのように解決するのですか?

デフォルト値にフォールバックするビルトインはありません。 そのため、昔ながらのif-elseを実行する必要があります。

しかし、それを簡単にするために、いつでもヘルパー関数を作成することができます。

func getenv(key, fallback string) string {
    value := os.Getenv(key)
    if len(value) == 0 {
        return fallback
    }
    return value
}

なお マイケル・ハウゼンブラス がコメントで指摘しています。 が指摘しているように、環境変数の値が本当に空の場合、代わりにフォールバック値が取得されることに留意してください。

さらに良い方法として ŁukaszWojciechowski が指摘したように os.LookupEnv :

func getEnv(key, fallback string) string {
    if value, ok := os.LookupEnv(key); ok {
        return value
    }
    return fallback
}