【Go】envファイルの読み込み方!

今回はGo言語の学習です。
現場では必ず使うenvファイルの読み込み方法です。
目次
envの読み込み
initまたはmainでenvを読み込みます。
「.envファイル」から環境変数を読み込んで、実行中のプロセスの環境変数に設定します。
「.envファイル」をプロジェクトのルートに置き、godotenv.Load() を呼び出すことで、そのファイルに定義された環境変数を読み込みます。

これで環境変数がプログラム内で利用可能になります。
package main
import (
"fmt"
"os"
"github.com/joho/godotenv"
)
func init() {
// 環境変数ファイルの読み込み
err := godotenv.Load()
if err != nil {
log.Printf(".envファイルの読み込みエラー: %v", err)
}
}

ファイル指定が明示的指定して読み取る方法もできます。
if err := godotenv.Load(".env"); err != nil {
log.Printf(".envファイルの読み込みエラー: %v", err)}
}
こちらの場合は、Loadの引数にファイル名を指定することでできます。
could not import github.com/joho/godotenv (no required module provides package “github.com/joho/godotenv")
先ほどのgodotenvを記述するとimportに「"github.com/joho/godotenv"」が記述されて警告が出ます。
import { "github.com/joho/godotenv" }

「github.com/joho/godotenv」をモジュールに追加します。
go get github.com/joho/godotenv
「go get」すると、「go.mod」ファイルのrequireセッションにgodotenvが追加されます。
「go get」 を実行したら、依存関係を最新に更新します。
go mod tidy
スポンサードサーチ
envファイル側
envファイルに設定していることで、記述内容がLoadで読み込まれます。
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_SESSION_TOKEN=
読み込みハンドリング
os.Getenv は、Go言語の標準ライブラリである os パッケージの関数で、環境変数の値を取得するために使用されます。

指定した環境変数名に対応する値を文字列として返します。
awsKey := os.Getenv("AWS_ACCESS_KEY_ID")
if awsKey == "" {
logger.Fatal("AWS_ACCESS_KEY_IDが見つかりません")
}
Getenvの引数はenv内の文字列で変数を指定しています。
主な違い
特徴 | os.Getenv | godotenv.Load |
---|---|---|
役割 | 環境変数の値を取得 | .env ファイルから環境変数を設定 |
返り値 | 指定した環境変数の値(存在しない場合は空) | 成功またはエラーを示す (error) |
使用する場面 | 環境変数が既に設定されているとき | .env ファイルから環境変数を読み込みたいとき |
まとめ
- os.Getenv は既存の環境変数を取得するために使用します。
- godotenv.Load は .env ファイルから環境変数を読み込むために使用し、その後に os.Getenv でそれらの環境変数を取得できます。