カランのブログ

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

ソフトウェアエンジニア / 台湾人 / 福岡生活
このブログはRSS Feed をサポートしています。RSSリンクをクリックして設定してください。技術に関する記事はコードがあるのでブログで閲覧することをお勧めします。

今のモード ライト

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

記事のタイトルや概要は自動翻訳であるため(中身は翻訳されてない場合が多い)、変な言葉が出たり、意味伝わらない場合がございます。空いてる時間で翻訳します。

[golangノート] プロジェクトの環境変数を設定する方法

前言

プロジェクト開発中には、さまざまな環境を切り替える必要があります。そのため、通常は異なる環境変数を設定します。ただし、プログラム内に直接固定値を書き込むと、変更が非常に面倒です。環境変数を動的に渡すことができれば、不要な変更を大幅に減らし、プログラムもよりクリーンになります。

flag

通常、golangではflagパッケージを使用して同様の効果を実現できます。例えば:

var env string
var accessToken string
func main() {
    flag.StringVar(&env, 'ENV', 'development', 'your current env')
    flag.StringVar(&accessToken, 'ACCESS_TOKEN', 'xxx-oo-ooo', 'your API access token')
    flag.Parse()

    // アプリケーションを起動する
}

または、この記事で言及されている方法を参考に、go build -ldflagを使用して変数をコンパイル時に設定することもできます。

これにより、プログラム内で値を直接書き込む必要はなくなりますが、変数は事前に定義する必要があります。

YAMLを使用して読み込む

上記の問題を解決するために、環境変数を統一的に管理するために、yaml(またはお好みの形式)を使用することができます。例えば:

func LoadEnv(filename string) bool {
    file, err := ioutil.ReadFile(filename)
    if err != nil {
        // 本番環境では、コンソールで直接環境変数を設定することもあります
        return false
    }

    var config := make(map[string]string)
    yaml.Unmarshal(file, &config)
    for k, v := range config {
		os.Setenv(k, v)
	}
}

yamlの変数を読み込んだ後、os.Setenv(k, v)を使用して一元的に保存します。これにより、ローカル環境で変数を簡単に調整できるようになります。設定を無視するようにしておくことを忘れないでください。そうしないと、変数に機密情報が含まれていて、かつ公開されているリポジトリの場合、情報漏洩のリスクがあります。

後記

この問題を解決するために、非常にシンプルなリポジトリを作成しました。開発上本当に必要な場合は、引き続き最適化を行ってください。XD

次の記事

vuex と webpack の動的インポートによりモジュールを動的にロードする

前の記事

日本のソフトウェア業界の一般名詞変換

この文章が役に立つと思うなら、下のリンクで応援してくれると大変嬉しいです✨

Buy me a coffee