環境変数とは
- 実行時のオプションとしてではなく、プロセスが持つ変数として提供される
- オペレーティングシステムは、プログラムの実行時に環境変数のリストをプログラムに渡す
- デプロイ時に設定可能で、同一のバイナリを異なる環境(本番、テストなど)で使用する際に柔軟な設定を可能にする
環境変数の取得方法
2通り紹介する
os
パッケージを使用する方法
一番プリミティブな方法
package main
import (
"fmt"
"os"
)
func main() {
gopath := os.Getenv("GOPATH")
fmt.Println(gopath)
}
envconfig
を使用する方法
環境変数をGoの構造体にマッピングすることができる
- 使い方
- 構造体のフィールドに
envconfig
タグを付けることで、環境変数との対応付けを行う -
default
オプションを使用して、環境変数が設定されていない場合のデフォルト値を指定できる -
required
オプションは、環境変数が必須であることを指定できる。この環境変数が設定されていない場合、envconfig.Processはエラーを返す。
- 構造体のフィールドに
package main
import (
"fmt"
"github.com/kelseyhightower/envconfig"
)
type Config struct {
Port uint16 `envconfig:"PORT" default:"3000"`
Host string `envconfig:"HOST" required:"true"`
AdminPort uint16 `envconfig:"ADMIN_PORT" default:"3001"`
}
func main() {
var c Config
err := envconfig.Process("", &c)
if err != nil {
fmt.Println("Error processing environment variables:", err)
return
}
fmt.Println(c)
}
参考